К сожалению, создание приложений включает в себя кодирование. Независимо от того, насколько тщательно вы пишете / отлаживаете свою программу, невозможно представить каждую ситуацию, которая может пойти не так. Неопытный пользователь может, например, попытаться открыть несуществующий файл или ввести неверное значение в поле данных.
Пользователи делают ошибки, и мы должны быть готовы обработать / предотвратить эти ошибки везде и всегда, когда это возможно.
Ошибки, исключения?
Исключением, как правило, является состояние ошибки или другое событие, которое прерывает нормальный поток выполнения в приложении. Всякий раз, когда возникает ошибка в результате обработки строки кода, Delphi создает (вызывает) объект-потомок от TObject, называемый объектом исключения.
Охраняемые блоки
Приложение реагирует на исключение, выполняя некоторый код завершения, обрабатывая исключение, или и то, и другое. Способ включить перехват ошибок / исключений в данном коде, исключение должно происходить в защищенном блоке операторов. Общий код выглядит так:
пытаться. {охраняемый блок кода} Кроме. на самом деле начать. {блок-дескрипторы исключений SomeException} end; конец;
попробуй / кроме оператор выполняет операторы в защищенном блоке кода. Если операторы выполняются без возникновения каких-либо исключений, блок исключений игнорируется, и управление передается оператору после ключевого слова end.
Пример:
... Ноль: = 0; пытаться. пустышка: = 10 / ноль; Кроме. на EZeroDivide сделать. MessageDlg («Невозможно разделить на ноль!», MtError, [mbOK], 0); конец;...
Защита ресурсов
Когда часть кода получает ресурс, часто необходимо убедиться, что ресурс освобожден снова (или вы можете получить утечка памяти), независимо от того, завершается ли код нормально или прерывается исключением. В этом случае синтаксис использует наконец Ключевое слово и выглядит так:
{некоторый код для распределения ресурсов} пытаться. {охраняемый блок кода} наконец. {блок завершения - код для свободных ресурсов} конец;
Пример:
... AboutBox: = TAboutBox. Создать (ноль); пытаться. AboutBox. ShowModal; наконец. AboutBox. Выпуск; конец;...
Заявка. OnException
Если ваше приложение не обрабатывает ошибку, вызвавшую исключение, то Delphi будет использовать обработчик исключений по умолчанию - он просто выведет окно сообщения. Вы можете написать код в событии OnException для объекта TApplication, чтобы перехватывать ошибки на уровне приложения.
Перерыв на исключения
При создании программы с обработкой исключений вы можете не захотеть, чтобы Delphi ломал исключения. Это отличная возможность, если вы хотите, чтобы Delphi показывал, где произошло исключение; однако это может раздражать, когда вы тестируете собственную обработку исключений.
Несколько заключительных слов
Идея этой статьи состоит в том, чтобы дать вам быстрый взгляд на исключения. Для дальнейшего обсуждения обработки исключений рассмотрим Об обработке исключений в Delphi Exception Handling, используя такой инструмент, как Delphi Crash / Обработка исключений с помощью отчетов об ошибках и некоторые из следующих связанных статей: