318______________________________________________Глава 4

класса Exception. Этот объект является сгенерированным исключением, а класс
Exception — базовый класс всех исключений.

Простейшая обработка исключения могла бы производиться функцией Show-
Exception, обеспечивающей отображение информации об исключении:

Application->ShowException(E) ;

Примеры сообщений, выдаваемых этой функцией, приведены на рис. 4.28. В
заголовке окна пишется имя приложения, а текст содержит описание причины ге-
нерации исключения.

Сообщения, выдаваемые функ-     Я^^^^Ж':,,.-^   ::::   ^'йк    ::     ::       I

_ „,      -        .                                 ^N^A^II  ' 'Owing point division by zero- ;i       'W^^m   1ащ is not a vaadtioataTa point value, '

циеи Show/Exception при деле-              '      ,"\;•••"    -W                     •
нии на нуль (а) и при неверной     Bfc-    i-—=....-.........._ii. -у1;!11';,     ::       р—г^——^

записи вводимого числа (6)        р", :., 1и«^и^т,в=.)1                                   :

Основным недостатком функции являются сообщения на английском языке,
что вряд ли порадует пользователей вашего приложения. Поэтому лучше сделать
собственные сообщения. При этом для определения истинного класса сгенериро-
ванного исключения можно воспользоваться методом ClassName (см. раз-
дел 1.6.6.2 главы 1 и описание методов класса TObject в главе 15). Тогда обработ-
чик события OnException может иметь, например, следующий вид:

void _fastcall TFormI::MyException(TObject *Sender, Exception *E)
(
AnsiString S = "Ошибка вычислений : ";

if (String(E->ClassName()) == "EZeroDivide")
S += "деление на нуль";

if(String(E->ClassName()) == "EOverflow")
S += "переполнение";

if(String(E->ClassName()) == "EInvalidArgument")
S += "недопустимое число";

if(String(E->ClassName()) == "EConvertError")
S += "ввели недопустимое число";

Appiication->MessageBox(S.c_str(),"Повторите ввод",МВ_ОК) ;

}

На рис. 4.29 приведены примеры сообщений, выдаваемых эти обработчиком.
Исключения в этих примерах идентичны тем, которые приводились на рис. 4.28.
Вероятно, пользователям более понравятся сообщения рис. 4.29, чем сообщения
рис. 4.28.

Сообщения, выдаваемые вашим обработчиком при         даДЙ / -  ; ^

/ \                    -                          '       ^Hr^^l Ошибка Бычислелий* делание на нуъ : "

делении на нуль (а) и при неверной записи вводимого .    Жуй     ::,:

числа (б)                        as^'^E^Ea

'1:^^^' 'C^'^epb'4^*^'®^ '• е&ежнед№эс?им№ чист '

.,, ^^\:^ш^ :/