Учись программированию на C++ Builder бесплатно!

В C++Builder имеется исключение EAbort, генерация которого, как и любых других, прерывает процесс вычисления. Но если приложение не отлавливает соответствующим блоком catch исключений этого класса, то они попадают в обработчик TApplicallon::HandleException и там, в отличие от других исключений, разрушаются без веских сообщений. Таким образом, это «молчаливое» прерывание процесса вычисления, при котором не должно отображаться диалоговое окно с сообщением об ошибке.

Простейший путь генерации исключения EAbort это вызов функции Abort. Например:

if (...) Abort();

Только нельзя путать две похожие внешне функции:

  • Abort - генерация «молчаливого» исключения
  • abort - аварийное завершение программы

Обычное применение EAbort прерывание вычислений при выполнении некоторого условия окончания или условия прерывания пользователем (например, при нажатии клавиши Esc или какого-то оговоренного сочетания клавиш). Функция Abort прерывает текущую процедуру и все вызвавшие ее процедуры, передавая управление на самый верх. Таким образом, это наиболее простой выход из глубоко вложенных процедур. Впрочем, можно при необходимости перехватить исключение на каком-то промежуточном уровне, предусмотрев на нем блок try...catch и вставив соответствующий оператор обработки:

catch(EAbort&)
{
...
}
Поделиться