Глава 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++ предупредит вас, что локальная переменная не использована.
try {
ProcessElements() ;
catch (int) {
cout « "Ошийка в функции ProcessElements()!\n";
Различные типы исключительных ситуаций нужны для того, чтобы программы могли различать виды ошибочных состояний. Каждый тип исклю-