596__________________'____________Часть IV. Новые возможности C++

Обработчик. Синтаксис обработчика имеет следующий вид:

catch ( объявление первой исключительной ситуации)

составной оператор catch ( объявление второй исключительной ситуации)

составной оператор

Отсюда можно сделать несколько важных выводов. В обработчик входит составной оператор, который должен быть заключен в фигурные скобки точно так же, как блоки try. Из синтаксиса блока try (см. предыдущий раздел) следует, что за блоком try идет список обработчиков. Это означает, что у каждого блока try может быть множество различных обработчиков исключительных ситуаций. Единственное безусловное ограничение состоит в том, что тип исключительной ситуации каждого обработчика данного блока try должен быть уникален.

Взглянем на листинг 22.12; он демонстрирует несколько примеров как правильных, так и неправильных обработчиков исключительных ситуаций.

h05961.jpg

// Неправильно: обработчик должен быть составным оператором 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);

)