596__________________'____________Часть IV. Новые возможности C++
Обработчик. Синтаксис обработчика имеет следующий вид:
catch ( объявление первой исключительной ситуации)
составной оператор catch ( объявление второй исключительной ситуации)
составной оператор
Отсюда можно сделать несколько важных выводов. В обработчик входит составной оператор, который должен быть заключен в фигурные скобки точно так же, как блоки try. Из синтаксиса блока try (см. предыдущий раздел) следует, что за блоком try идет список обработчиков. Это означает, что у каждого блока try может быть множество различных обработчиков исключительных ситуаций. Единственное безусловное ограничение состоит в том, что тип исключительной ситуации каждого обработчика данного блока try должен быть уникален.
Взглянем на листинг 22.12; он демонстрирует несколько примеров как правильных, так и неправильных обработчиков исключительных ситуаций.
// Неправильно: обработчик должен быть составным оператором try {
ProcessStuff () ;
} catch (int ErrorCode)
ProcessError(ErrorCode) ;
// Правильно try (
ProcessStuff();
) catch (int ErrorCode) (
ProcessError(ErrorCode) ;
}
// Неправильно: оба блока catch обрабатывают исключительные // ситуации одного и того же типа (int) try {
ProcessStuff () ;
) catch (int CommError) {
ProcessError(ConroError);
) catch (int ErrorCode) {
ProcessError(ErrorCode);
)