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

Глобальный дескриптор исключений

Delphi , Синтаксис , Ошибки и Исключения

Глобальный дескриптор исключений

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

{ 
  Although it's easy to catch exceptions using try/except blocks, 
  some applications might benefit from having a global exception handler. 
  For example, you may want your own global exception handler to handle "common" 
  errors such as "divide by zero," "out of space," etc. 
  Thanks to the TApplication's "OnException" event, 
  which occurs when an unhandled exception occurs in your application, 
  you can easily catch the unhandled exceptions. 


  Obowhl es leicht ist, Fehler mittels try/except abzufangen, 
  ist es manchmal von Vorteil, wenn die Anwendung eine eigene globale 
  Fehlerbehandlungsroutine hat. 
  Zum Beispiel zum Abfangen von Fehlern wie "Dividiert durch Null" 
  oder "Zuwenig Speicherplatz" etc. 
  Mit dem OnException Ereignis von TApplication ist es leicht, 
  unbehandelte Fehler in der eigenen Anwendung abzufangen. 
  Jede Exception, die nicht durch einen Try-Except-Block abgefangen wurde, 
  gelangt dann automatisch in die Routine "MyExceptionHandler". 
}

 {1. 

 Declare your custom exception handler: 
 eklariere den eigenen globalen Exception Handler: 
}


 { Public declarations }
 procedure MyExceptionHandler(Sender : TObject; E : Exception );


 {2. 

 Define your exception handler in the "implementation" section: 
 In den Implementations-Abschnitt kommt dieser Code: 
}

 procedure TForm1.MyExceptionHandler(Sender : TObject; E : Exception );
 begin
   MessageDlg('ERROR: ' + E.Message);
 end;


 {3. 

 Assign the created exception handler to your application's OnException event. 
 Weise dem OnException Ereignis den eigenen Exception Handler zu. 
}

 procedure TForm1.FormCreate(Sender: TObject);
 begin
      Application.OnException := MyExceptionHandler;
 end;

Это код-набор на Delphi, демонстрирующий создание глобального обработчика исключений для приложения с помощью события OnException компонента TApplication.

Обзор кода:

  1. В первой секции объявляется пользовательский процедура обработки исключений MyExceptionHandler, которая принимает два параметра: Sender (типа TObject) и E (типа Exception).
  2. В разделе реализации процедура MyExceptionHandler определяется. Она просто отображает сообщение об ошибке с помощью функции MessageDlg.
  3. В обработчике события FormCreate основной формы (TForm1) событие OnException объекта Application присваивается пользовательскому обработчику исключений MyExceptionHandler.

Когда в приложении происходит необработанное исключение, событие OnException будет вызвано, и процедура MyExceptionHandler будет вызвана с объектом исключения как параметром. Процедура может затем обрабатывать исключение соответствующим образом.

Например, если вы хотите поймать все исключения деления на ноль и отобразить пользовательское сообщение об ошибке, вы можете модифицировать процедуру MyExceptionHandler следующим образом:

procedure MyExceptionHandler( Sender: TObject; E: Exception );
begin
  if (E is EORangeError) and (E.ClassName = 'ERangeError') then
    MessageDlg('Ошибка деления на ноль! Проверьте свои расчеты.', mtError, [mbOK]);
end;

В этом коде проверяется, является ли исключение ERangeError с именем класса 'ERangeError', которое обычно возникает при попытке разделить на ноль. Если это условие истинно, отображается пользовательское сообщение об ошибке.

Присваивая этому пользовательскому обработчику исключений событие OnException, вы можете поймать и обработать исключения глобально в вашем приложении.

В статье описывается, как создать глобальный дескриптор исключений в Delphi, позволяющий обработать все необработанные исключения в приложении.


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

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




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


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


реклама


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

Время компиляции файла: 2024-08-19 13:29:56
2024-10-24 19:59:07/0.0036451816558838/0