Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi try-except - HandleException-Befehl (https://www.delphipraxis.net/72106-try-except-handleexception-befehl.html)

simlei 25. Jun 2006 20:20


try-except - HandleException-Befehl
 
Zitat:

An exception block that contains no exception handlers, but instead consists only of a list of statements, handles all exceptions. For example,

try
...
except
HandleException;
end;

Here, the HandleException routine handles any exception that occurs as a result of executing the statements between try and except.
...schrieb die Delphi-Hilfe so schön.
Delphi7 schreibt aber bei mir in dieser Try-Except-Routine ...

Delphi-Quellcode:
  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;
... [Error] Unit3.pas(92): Undeclared identifier: 'HandleException' ...

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).

TheAn00bis 25. Jun 2006 20:23

Re: try-except - HandleException-Befehl
 
Vielleicht "Application.HandleException;" ?

simlei 25. Jun 2006 20:33

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...

TheAn00bis 25. Jun 2006 20:37

Re: try-except - HandleException-Befehl
 
Übergib einfach "nil", der Parameter ist überflüßig.

Muetze1 25. Jun 2006 20:39

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.

simlei 25. Jun 2006 20:40

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?

Muetze1 25. Jun 2006 20:42

Re: try-except - HandleException-Befehl
 
Zitat:

Zitat von simlei
Hmm. das mit dem nil hat nmicht geklappt... Und wenn das ein Pseudocode ist, wie kann ich mein Ziel nun erreichen?

Behandle an der Stelle die Exceptions! Was fehlt dir denn nun noch? Schmeiss dort die ShowMessage aus oder vllt. auch noch den Klassennamen und Meldungstext der Exception - aber was nun noch? Was ist dir unklar? Was fehlt dir?

Möglichkeit 1:
Delphi-Quellcode:
Try
  ...
Except
  On E: Exception Do
    ShowMessage(Format('Exception %s aufgetreten: %s', [E.ClassName, E.Message]));
End;
Möglichkeit 2:
Delphi-Quellcode:
Try
  ...
Except
  ShowMessage(Format('Exception %s aufgetreten: %s', [Exception(ExceptObject).ClassName, Exception(ExceptObject).Message]));
End;

simlei 25. Jun 2006 20:44

Re: try-except - HandleException-Befehl
 
ich will - siehe oben - dass das Exceptionfenster nicht mehr angezeigt wird.

Muetze1 25. Jun 2006 20:46

Re: try-except - HandleException-Befehl
 
Zitat:

Zitat von simlei
ich will - siehe oben - dass das Exceptionfenster nicht mehr angezeigt wird.

Wird es doch auch nicht. Starte die EXE vom Explorer aus und staune...

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.

TheAn00bis 25. Jun 2006 20:46

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".


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:50 Uhr.
Seite 1 von 2  1 2      

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