320______________________________________________Глава 4

catch(char * s)

{
Application->MessageBox(s, "Ошибка ввода", MB_ICONHAND|MB_OK) ;

}

Заголовок этого блока обеспечивает перехват любых исключений типа char *
и отображение их текстов в диалоговом окне, пример которого показан на
рис. 4.30.

Окно, отображающее текст перехваченного исключения типа   NISfc       \:

L.    *                                                                                 ^Ж^Ж Не аадана требуемая информация

Вы можете в качестве параметра throw задавать целые числа, отображающие
некие номера ошибок. Например:

if (...)throw 1;

В данном случае генерируется объект исключения типа int. Поэтому подобные
исключения могут быть перехвачены и обработаны блоком вида:

catch(int& i)
(

switch (i)
(
case 1: ...

break;

case 2: ...

break;

}

Можно генерировать объекты исключений и более сложных типов, например,
структуры с полями, которые анализируются в обработчике исключения. Пусть,
например, пользователь перед занесением в базу данных новой записи, относящей-
ся к некоторому объекту, должен задать некоторый минимум параметров (харак-
теристик) этого объекта. В приведенном ниже коде создается структура st типа
Pers и в ходе диалога с пользователем в нее заносится число заданных параметров
(st.il) объекта. Тогда перед занесением в базу данных программа сверить требуе-
мое (st.il) и действительно заданное (st.i2) число параметров. Если параметров за-;

дано недостаточно, то генерируется исключение, объектом которого является
структура st. Обработчик этого исключения в свою очередь может проанализиро-
вать все поля структуры и выдать пользователю соответствующее сообщение.

struct Pers
<
int il, i2;

) st = (0,5);

try
(
if (...) st.il++;

iffst.il < st.i2) throw st;

)

catch (Pers&)

{