ich bin am verzweifeln.
Ich möchte einen eigenen ExceptionHandler erstellen und stoße dabei nur auf Probleme:
Meine Konfiguration ist folgende:
Windows 10
Laazarus 2.0.12
FPC 3.2.0
Folgendes habe ich diverse Male als Lösung im Internet gefunden.
Probleme:
Exception in Button1Click aufgerufen -> Es wird der Debugger.- und SytemHandler und nicht der von mir definierte aufgerufen.
Exception in Timer1Timer aufgerufen -> Es wird nur der DebuggerHandler aufgerufen.
Code: Alles auswählen
program project1;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Interfaces, // this includes the LCL widgetset
Forms, Unit1
{ you can add units after this };
{$R *.res}
begin
RequireDerivedFormResource:=True;
Application.Scaled:=True;
Application.Initialize;
Application.CreateForm(TForm1, Form1);
try
Application.Run;
except
end;
end.
Code: Alles auswählen
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Timer1: TTimer;
procedure OnError(Sender: TObject; E: Exception);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnException := @OnError;
end;
procedure TForm1.OnError(Sender: TObject; E: Exception);
begin
ShowMessage('HALLO' + E.Message);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
raise Exception.Create('**** Btn1 ****');
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled:=false;
raise Exception.Create('**** Timer1 ****');
end;
end.
Exception in Button1Click aufgerufen -> Es wird der Debugger.- und der von mir definierte aufgerufen.
Exception in Timer1Timer aufgerufen -> Es wird nur der DebuggerHandler aufgerufen.
Warum benötige ich TApplicationProperties?
Was muss getan werden damit die Exception aus Timer1Timer "gefangen wird"?
Gruß
Frank