Инициализация исключительной ситуацииDelphi , Синтаксис , Ошибки и ИсключенияИнициализация исключительной ситуацииАвтор: Xavier Pacheco { Copyright © 1999 by Delphi 5 Developer's Guide - Xavier Pacheco and Steve Teixeira } unit MainFrm; interface uses SysUtils, Windows, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, AppEvnts, Buttons; type ENotSoBadError = class(Exception); EBadError = class(Exception); ERealBadError = class(Exception); TMainForm = class(TForm) btnNotSoBad: TButton; btnBad: TButton; btnRealBad: TButton; appevnMain: TApplicationEvents; procedure btnNotSoBadClick(Sender: TObject); procedure btnBadClick(Sender: TObject); procedure btnRealBadClick(Sender: TObject); procedure appevnMainException(Sender: TObject; E: Exception); public end; var MainForm: TMainForm; implementation {$R *.DFM} procedure TMainForm.btnNotSoBadClick(Sender: TObject); begin raise ENotSoBadError.Create('This isn''t so bad!'); end; procedure TMainForm.btnBadClick(Sender: TObject); begin raise EBadError.Create('This is bad!'); end; procedure TMainForm.btnRealBadClick(Sender: TObject); begin raise ERealBadError.Create('This is real bad!'); end; procedure TMainForm.appevnMainException(Sender: TObject; E: Exception); var rslt: Boolean; begin if E is EBadError then begin { Show a custom message box and prompt for application termination. } rslt := MessageDlg(Format('%s %s %s %s %s', ['An', E.ClassName, 'exception has occurred.', E.Message, 'Quit App?']), mtError, [mbYes, mbNo], 0) = mrYes; if rslt then Application.Terminate; end else if E is ERealBadError then begin // Show a custom message // and terminate the application. MessageDlg(Format('%s %s %s %s %s', ['An', E.ClassName, 'exception has occured.', E.Message, 'Quitting Application']), mtError, [mbOK], 0); Application.Terminate; end else // Perform default exception handling Application.ShowException(E); end; end. Программа на Delphi, демонстрирующая создание и обработку пользовательских исключений в приложении Windows. Вот разбивка кода: Классы исключений
Программа определяет три пользовательских класса исключений: Форма и кнопки
Программа создает форму ( Обработка исключений
Когда происходит исключение, программа использует процедуру обработчика события
Предложения по улучшению кода
Вот несколько предложений для улучшения кода:
1. Используйте более описательные имена переменных: вместо использования однобуквенных переменных, таких как В целом, код хорошо структурирован и легко понятен. Однако есть некоторые области, где можно улучшить код для лучшей поддерживаемости и масштабируемости. В статье "Инициализация исключительной ситуации" автор Xavier Pacheco описывает способ инициализации исключительных ситуаций в приложении Delphi, создавая классы исключений и обрабатывая их в коде формы. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Ошибки и Исключения ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |