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

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

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

{

// сделайте здесь то, что нужно для обработки исключения, // а затем выведите сообщение об ошибке Application->ShowException(Е);

}

Теперь окно с сообщением об ошибке будет отображаться так же, кйк и при реакции VCL на необрабатываемое исключение.

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

Отладка с обработкой исключений

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

Иногда блок catch находится в коде VCL. Это будет иметь место для тех исключений VOL, которые вы не обрабатываете в своем коде. В таком случае точку выполнения можно увидеть с помощью CPU View.

Другой аспект отладки с исключениями состоит в том, что окно сооб­щения для исключения VCL будет выведено даже в том случае, если вы самостоятельно обрабатываете исключение. Это обстоятельство может путать и несколько раздражать, если вы не сталкивались с этим прежде. Чтобы предотвратить вывод окна сообщения VCL, а также остановку программы при формировании исключения, откройте вкладку Preferences диалогового окна Environment Options и сбросьте флажок Break on Exceptions (Преры­вание при исключении). В этом случае отладчик не будет приостанавливать выполнение программы при формировании исключения.

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