Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Инициализация исключительной ситуации

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.

Вот разбивка кода:

Классы исключений Программа определяет три пользовательских класса исключений: ENotSoBadError, EBadError и ERealBadError. Эти классы наследуются от класса Exception и могут использоваться для поднятия исключений в программе.

Форма и кнопки Программа создает форму (TMainForm) с тремя кнопками: btnNotSoBad, btnBad и btnRealBad. Каждая кнопка связана с процедурой обработчика событий, которая поднимает пользовательское исключение при нажатии.

Обработка исключений Когда происходит исключение, программа использует процедуру обработчика события appevnMainException для его обработки. Эта процедура проверяет тип поднятого исключения и выполняет разные действия в зависимости от его класса:

  • Если исключение является типа EBadError, программа отображает пользовательский сообщатель с запросом на остановку приложения.
  • Если исключение является типа ERealBadError, программа отображает пользовательский сообщатель с запросом на закрытие приложения.
  • Для любого другого исключения программа использует механизм обработки исключений, предоставляемый Delphi.

Предложения по улучшению кода Вот несколько предложений для улучшения кода: 1. Используйте более описательные имена переменных: вместо использования однобуквенных переменных, таких как rslt, используйте более описательные имена, которые указывают на их цель. 2. Рассмотрите использование централизованной системы журналирования ошибок: текущая реализация журналирования ошибок происходит в пользовательском сообщателе, но вы можете рассмотреть использование централизованной системы журналирования для лучшего отслеживания и анализа ошибок. 3. Используйте механизмы обработки исключений, предоставляемые Delphi: хотя программа использует пользовательские исключения, она также может использовать механизмы обработки исключений, предоставляемые Delphi, такие как блоки try-except, для более robust handling исключений.

В целом, код хорошо структурирован и легко понятен. Однако есть некоторые области, где можно улучшить код для лучшей поддерживаемости и масштабируемости.

В статье "Инициализация исключительной ситуации" автор Xavier Pacheco описывает способ инициализации исключительных ситуаций в приложении Delphi, создавая классы исключений и обрабатывая их в коде формы.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Ошибки и Исключения ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 11:35:27/0.0058839321136475/1