Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Tutorials und Kurse (https://www.delphipraxis.net/36-tutorials-und-kurse/)
-   -   Delphi Anmerkungn zum "Exceptions Tutorial" (https://www.delphipraxis.net/151637-anmerkungn-zum-exceptions-tutorial.html)

matmok 26. Mai 2010 13:39


Anmerkungn zum "Exceptions Tutorial"
 
Hallo,

zum Abschnitt "Wieso kommt Delphi mit manchen Exceptions nicht klar?" im Tutorial Exceptions ist mir folgendes aufgefallen:

Man kann den Debugger doch dazu bringen an der richtigen Stelle stehen zu bleiben und die Exception korrekt anzuzeigen bzw. auszuwerten, indem man den Code wie folgt erweitert:

normal (der Debugger Zeigt die Stelle der Exception nicht korrekt an):
Delphi-Quellcode:
 Application.Initialize;
 Foo(); // in der Procedure Foo() der unit2 wird durch 0 geteilt => Exception
 Application.MainFormOnTaskbar := True;
 Application.CreateForm(TForm1, Form1);
 Application.Run;
besser (hier bleibt der Debugger dort stehen wo die Exception verursacht wird, also in Unit2.pas Zeile xy!):
Delphi-Quellcode:
 try
  Application.Initialize;
  Foo(); // in der Procedure Foo() der unit2 wird durch 0 geteilt => Exception
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
 except                                   // durch diese Zeilen werden auch Exceptions vor Application.Run korrekt behandelt!
  Application.HandleException(Application);// 
 end;
Was meint die Delphi-Gemeinde, kann man das so machen, sollte man das so machen, oder birgt das Gefahren?


Nachtrag: das "try except" sorgt dafür, dass mir die richtige Stelle angezeigt wird. (Ein "try finally" reicht nicht aus.)
Das Application.HandleException(Application) sorgt dann noch für die bekannte MessageBox.

mfg,
Tobi


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:55 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz