Кент Рейсдорф. BORLAND C++BUILDER. Раздел 4

Кент Рейсдорф. BORLAND C++BUILDER. Страница 411

Обратите внимание, что в предшествующих примерах мы захватываем ссылку на класс исключения VCL, но ничего не делаем с экземпляром класса, переданным блоку catch. Здесь мы действительно не заботимся о том, какую информацию содержит класс EInvalidGraphic, поскольку нам просто нужно знать, что исключение произошло. Вам следует просмотреть интерактивную справку по интересующему вас конкретному классу VCL, обрабатывающему исключения, для получения более детальной информа­ции о свойствах и методах, доступных в этом классе.

Захват необрабатываемых исключений на уровне приложения

Вы можете также обрабатывать исключения на уровне приложения. ТАр- plication имеет событие с именем OnException, которое будет происходить при формировании каждого необрабатываемого исключения. Реагируя на это событие, вы можете захватить любое исключение, сформированное вашим приложением.

Вы перехватываете событие OnException точно так же, как мы это делали ранее, перехватывая события OnHint или Onldle:

1. Включите объявление функции в заголовок главной формы:

void _ fastcall OnException(TObject* Sender, Exception* E);

2. Добавьте в исходный модуль главной формы определение функции:

void fastcall TMainForm::OnException(TObject* Sender, Exception*

E) {

// сделайте здесь все, что нужно для обработки исключения

}

3. Присвойте адрес своей функции OnException() событию OnException объ­екта Application:

Application->OnException = SOnException;

Теперь функция OnException будет вызываться при возникновении не­обрабатываемых исключений.

Функция ShowExceptionQ может использоваться для отображения окна сообщения с описанием возникшей ошибки. Обычно эта функция вызывается обработчиком по умолчанию для OnException, но вы можете с равным ус­пехом использовать ее в своих приложениях. Один из параметров обработчика события OnException — это указатель на объект Exception (Exception — это базовый класс VCL для обработки исключений). Чтобы вывести окно сооб­щения об ошибке, передайте объект Exception функции ShowException():

Web-дизайн (с) 2010 All rights reserved