Глава 22. Обработка исключительных ситуаций 597

/./ Неправильно: та же самая ошибка (СопдпЕггогТуре — это int) typedef int CornmErrorType;

try {

ProcessStuff() ;

} catch (CommErrorType CommError) {

ProcessError(CommError) ;

i ;

catch (int ErrorCocle) {

ProcessError(ErrorCode) ;

>

/'/ Правильно: теперь CommErrorType — это i1 отдельный тип исключительной ситуации class' CommErrorType ( public:

int CornmError;

try (

ProcessStuff() ;

}

catch (CoinmErrorType CommError' {

// Подразумевается, что ProcessError () перегружена

// по типу CommErrorType

ProcessError(CommError);

} catch (int ErrorCode! (

FrocessError(ErrorCode) ;

В аргументах обработчика можно задать только тип исключительной ситуации, не объявляя имени объекта исключительной ситуации (см. листинг 22.13) — может быть, вашей программе для адекватной обработки сбоя этого будет вполне достаточно. Имейте в виду, что если вы объявляете имя объекта исключительной ситуации, но никак его не используете, компилятор Borland C++ предупредит вас, что локальная переменная не использована.

h05971.jpg

try {

ProcessElements() ;

catch (int) {

cout « "Ошийка в функции ProcessElements()!\n";

Различные типы исключительных ситуаций нужны для того, чтобы программы могли различать виды ошибочных состояний. Каждый тип исклю-