Обработка ошибок и исключений в приложениях Delphi

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

Ошибки, исключения?

Исключением, как правило, является состояние ошибки или другое событие, которое прерывает нормальный поток выполнения в приложении. Всякий раз, когда возникает ошибка в результате обработки строки кода, Delphi создает (вызывает) объект-потомок от TObject, называемый объектом исключения.

Охраняемые блоки

Приложение реагирует на исключение, выполняя некоторый код завершения, обрабатывая исключение, или и то, и другое. Способ включить перехват ошибок / исключений в данном коде, исключение должно происходить в защищенном блоке операторов. Общий код выглядит так:

instagram viewer
пытаться. {охраняемый блок кода} Кроме. на самом деле начать. {блок-дескрипторы исключений 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 / Обработка исключений с помощью отчетов об ошибках и некоторые из следующих связанных статей:

instagram story viewer