![]() |
try-except - HandleException-Befehl
Zitat:
Delphi7 schreibt aber bei mir in dieser Try-Except-Routine ...
Delphi-Quellcode:
... [Error] Unit3.pas(92): Undeclared identifier: 'HandleException' ...
try
fl_colorline := getcolor(Flaechen_ColorLine.Text); fl_colorpt := getcolor(Flaechen_ColorPt.Text); line_colorline := getcolor(Linien_ColorLine.Text); line_colorpt := getcolor(Linien_ColorPt.Text); pt_colorpt := getcolor(Punkte_ColorPt.Text); fl_radius := StrToInt(Flaechen_Radius.Text); line_radius := StrToInt(Linien_Radius.Text); pt_radius := StrToInt(Punkte_Radius.Text); fl_drawline := Flaechen_Check1.Checked; fl_drawpt := Flaechen_Check2.Checked; line_drawpt := Linien_Check1.Checked; except HandleException; ShowMessage('EXCEPTION!!!!'); end; Warum tritt diese Meldung auf (in der Hilfe ist er doch dokumentiert)? Braucht man für dieses HandleException etwa eine bestimmte Unit? Und wenn das bei mir so nicht funktionieren sollte, steht dann hier die Frage, wie ich sonst alle Exceptions, die in dem Befehlsblock zwischen Try und Except auftreten, blocken kann (sie erscheinen nicht auf dem Bildschirm) und dafür dann eigene Maßnahmen zur Behandlung des Fehlers ergreifen kann (Hier als Beispiel die Ausgabe in ShowMessage). |
Re: try-except - HandleException-Befehl
Vielleicht "Application.HandleException;" ?
|
Re: try-except - HandleException-Befehl
hmm. da gibt es tatsächlich ein "HandleException(Sender:TObject)" - aber in der Delphihilfe waren ja keine Parameter verlangt. Funktioniert dieses auch? bzw. wenn ja was muss das TObject sein? Das Form, in dem die Exception verursacht wird? (oder was sonst?)
Nachtrag... wenn ich als Sender Form3 nehme (der Delphi-Code steht im Form3) dann kommt trotzdem ne Exception... |
Re: try-except - HandleException-Befehl
Übergib einfach "nil", der Parameter ist überflüßig.
|
Re: try-except - HandleException-Befehl
Ähm, euch ist doch hoffentlich klar, das das Pseudocode ist. Die Delphi Hilfe will mit "HandleException" darauf hinweisen, dass man dort die Exceptions handeln soll. Es geht hier nicht um den Aufruf einer Funktion.
Die Application.HandeException() wird eh immer aufgerufen, wenn eine Exception bis nach ganz "oben" durchschlägt. |
Re: try-except - HandleException-Befehl
Hmm. das mit dem nil hat nmicht geklappt... Und wenn das ein Pseudocode ist, wie kann ich mein Ziel nun erreichen?
|
Re: try-except - HandleException-Befehl
Zitat:
Möglichkeit 1:
Delphi-Quellcode:
Möglichkeit 2:
Try
... Except On E: Exception Do ShowMessage(Format('Exception %s aufgetreten: %s', [E.ClassName, E.Message])); End;
Delphi-Quellcode:
Try
... Except ShowMessage(Format('Exception %s aufgetreten: %s', [Exception(ExceptObject).ClassName, Exception(ExceptObject).Message])); End; |
Re: try-except - HandleException-Befehl
ich will - siehe oben - dass das Exceptionfenster nicht mehr angezeigt wird.
|
Re: try-except - HandleException-Befehl
Zitat:
Nur um die Exception Meldung zu unterdrücken kannst du den Except/End Block leer lassen. Damit werden die Exceptions abgefangen und schlagen sich nicht mehr eine Ebene höher durch. Das die Exceptionmeldung in der IDE angezeigt wird ist ganz normal. Entweder schaltest du dies Verhalten in der IDE ab oder du kontrollierst deine EXE in dem du sie vom Explorer aus startest. |
Re: try-except - HandleException-Befehl
Warum Pseudocode? Ohne "Application.HandleException" erfährt der User doch nicht, welche Exception ausgelöst wurde.
Wenn ich "Application.HandleException" in meinen Programmen nutze sagt mir eine MessageBox, welche Exception auftrat, ohne wird sie einfach "verschluckt". |
Re: try-except - HandleException-Befehl
SUPER (Beispiel 1 hat mir zugesagt)
da wäre auch gleich meine nächste Frage mitbeantwortet, wie ich die Ursache der Exception rauskriege... Vielen Dank für die schnelle Hilfe - hat ja insgesamt nur ca. 10min gedauert!! |
Re: try-except - HandleException-Befehl
Zitat:
Und wenn du die Exception anzeigen lassen willst, dann brauchst du kein Exception Handler - der von Application kommt dann eh zum tragen. Die Methode von Application die du da aufrufst wird standardmässig dem Application.OnException zugewiesen um alle nicht behandelten Exceptions anzuzeigen. |
Re: try-except - HandleException-Befehl
Zitat:
Delphi-Quellcode:
schreibe wird mir die Exception (auch ohne Debugger) angezeigt und wenn ich das "Application.HandleException(nil);" auskommentiere, dann nicht. Wenn es aber doch so oder so aufgerufen wird, warum wird mir dann nur im ersten Fall auch die Exception angezeigt?
procedure xyz;
var i: integer; begin try i := strtoint('a'); except Application.HandleException(nil); end; end; |
Re: try-except - HandleException-Befehl
Die Frage ist: in welchem Kontext rufst du die Procedure auf?
Dann wäre zum reinen Anzeigen der Exception wohl Application.ShowException() besser geeignet, oder? |
Re: try-except - HandleException-Befehl
Zitat:
Spielt der Kontext eine Rolle? Ich hatte jetzt an ButtonClick oder ähnliches gedacht. |
Re: try-except - HandleException-Befehl
Wenn du zwischen EXCEPT und END nichts hinschreibst, vernichtest du alles auftretenden Exceptions. Siehe
![]() Gruß Hawkeye |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:19 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