AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE Delphi 2006 - Fehlerbehandlung - Event?
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi 2006 - Fehlerbehandlung - Event?

Ein Thema von LoewenZahn · begonnen am 19. Mär 2014 · letzter Beitrag vom 20. Mär 2014
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.416 Beiträge
 
Delphi 12 Athens
 
#1

AW: Delphi 2006 - Fehlerbehandlung - Event?

  Alt 19. Mär 2014, 15:21
Zitat:
Delphi-Quellcode:
procedure TApplication.HandleException(Sender: TObject);
var
  O: TObject;
begin
  if GetCapture <> 0 then SendMessage(GetCapture, WM_CANCELMODE, 0, 0);
  O := ExceptObject;
  if IsClass(O, Exception) then
  begin
    if not IsClass(O, EAbort) then
      if Assigned(FOnException) then
        FOnException(Sender, Exception(O))
      else
        ShowException(Exception(O));
  end else
    SysUtils.ShowException(O, ExceptAddr);
end;
Eigentlich muß man da nichts machen.
Wenn etwas an OnException hängt, dann wird Dieses aufgerufen und ansonsten ShowException.
Und TApplicationEvents sollte sich direkt an Application.OnException hängen.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von LoewenZahn
LoewenZahn

Registriert seit: 10. Okt 2013
22 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: Delphi 2006 - Fehlerbehandlung - Event?

  Alt 20. Mär 2014, 08:37
Hallo,

leider scheint dies, zumindest in meinem Borland 2006 nicht zu funktionieren:

Delphi-Quellcode:
procedure TApplication.HandleException(Sender: TObject);
begin
  if GetCapture <> 0 then SendMessage(GetCapture, WM_CANCELMODE, 0, 0);
  if IsClass(ExceptObject, Exception) then
  begin
    if not IsClass(ExceptObject, EAbort) then
      if Assigned(FOnException) then
        FOnException(Sender, Exception(ExceptObject))
      else
        ShowException(Exception(ExceptObject));
  end else
    SysUtils.ShowException(ExceptObject, ExceptAddr);
end;
Und hier das OnException:

Delphi-Quellcode:
procedure TFormMain.ApplicationEvents1Exception(Sender: TObject; E: Exception);
Var F : textFile;
begin

  //Ausgabe des Fehlers in einem TAdvSmoothMessageDialog:
  md.HTMLText.Text := 'Es ist ein Schwerwiegender Fehler augetreten:<br/><br/><ul><li>'
                     +E.Message
                     +'</li></ul><br/><br/>Bitte kontaktieren Sie den Support.';
  md.Caption := 'Schwerwiegender Fehler';
  md.Execute;

  //Speichern des Errors in einer Textdatei:
  AssignFile(F,Dir_StartDir+'errorlog\'+loginname+'.log');
  If Not FileExists(Dir_StartDir+'errorlog\'+loginname+'.log') Then Rewrite(F)
  Else Append(F);

  Writeln(F,DateTimetostr(Now)+': '+E.Message+' | ActiveWindow: '+recent_visited_form.text);
  CloseFile(F);

end;
Ist ja auch halb so wild wenn ich es über die Einstellungen/Obtionen von Borland mache. Aber wohl ist mir dabei nicht

Gruß und danke für die bisherige Hilfestellung!
Tim
Passwörter sind wie Unterwäsche. Du darfst sie keinen sehen lassen, musst sie regelmäßig wechseln und solltest sie nicht mit Fremden tauschen.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
10.008 Beiträge
 
Delphi 12 Athens
 
#3

AW: Delphi 2006 - Fehlerbehandlung - Event?

  Alt 20. Mär 2014, 09:01
Danke für deine Hilfestellung. Ich habe jetzt die TApplicationEvents verwendet und mir dort eine Schicke Ausgabe erarbeitet. Trotzdem erscheint noch die Standardnachricht von Delphi über das Problem.
Delphi selbst zeigt dir, wenn du das Programm darüber im Debugger startest, die Exception an, auch wenn sie im Programm behandelt würde. Denn du möchtest das Programm doch gerade debuggen, und deshalb möchtest du doch die Fehler gerade erkennen.

Was ich nicht verstehe:
Wenn du das Problem im Debugger bekommst, warum behebst du es dann nicht dort auch? Das ganze Exception-Handling ist doch hauptsächlich dafür da, dass man einen Fehler abfängt und sauber loggt, den man im Test so nicht bekommt und daher nicht beheben kann.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von LoewenZahn
LoewenZahn

Registriert seit: 10. Okt 2013
22 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: Delphi 2006 - Fehlerbehandlung - Event?

  Alt 20. Mär 2014, 10:17
Hallo Jaenicke.

Was ich nicht verstehe:
Wenn du das Problem im Debugger bekommst, warum behebst du es dann nicht dort auch? Das ganze Exception-Handling ist doch hauptsächlich dafür da, dass man einen Fehler abfängt und sauber loggt, den man im Test so nicht bekommt und daher nicht beheben kann.
Ich bekomme das Problem/den Fehler während des laufenden Betriebes und möchte dort die Standardmeldung abfangen. Es ist nicht so, dass ich einen gewissen Fehler habe, dessen Ausgabe ich verhindern möchte. Vielmehr ist es so wie du sagst, dass ich einen unerwarteten Fehler abfangen und dokumentieren möchte.

Gruß
Tim
Passwörter sind wie Unterwäsche. Du darfst sie keinen sehen lassen, musst sie regelmäßig wechseln und solltest sie nicht mit Fremden tauschen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.416 Beiträge
 
Delphi 12 Athens
 
#5

AW: Delphi 2006 - Fehlerbehandlung - Event?

  Alt 20. Mär 2014, 15:24
Das OnException-Event wird noch vor dem Delphi-Exception-Dialog angeziegt?
Man könnte versuchen nach seiner Behandlung ein
Zitat:
Abort;
reinmachen, ber ich weiß nicht wie es an dieser Stelle reagiert.

Abort löst eine "stille" Exception aus (Diese werden standardmäßig nicht angeweigt), überspringt damit alle nachfolgenden Programmcodes,
aber wenn diese Exception nicht abgefangen wird und bis zum Windows durchrauscht, dann könnte das Programm abkratzen.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz