Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   try.......except....end; - Compiler soll dies beachten (https://www.delphipraxis.net/183372-try-except-end%3B-compiler-soll-dies-beachten.html)

Bladefire 5. Jan 2015 21:14

try.......except....end; - Compiler soll dies beachten
 
Hallo,

gibt es eine möglichkeit, das Delphi, try except, beim ausführen mit dem debugger beachtet?

Lg Simon

DeddyH 5. Jan 2015 21:17

AW: try.......except....end; - Compiler soll dies beachten
 
Ich verstehe die Frage nicht, kannst Du etwas konkreter werden?

Bladefire 5. Jan 2015 21:27

AW: try.......except....end; - Compiler soll dies beachten
 
Code:
try
x := 1
except
x := 2
Wenn beim Debuggen ein Fehler bei "x:=1" auftritt, dann bleibt der debugger stehen und führt nicht automatisch den except teil stattdesen aus.

Ich würde es gerne haben das delphi beim debuggen automatisch den except teil hernimmt, wenn der try teil einen fehler hat.

mkinzler 5. Jan 2015 21:30

AW: try.......except....end; - Compiler soll dies beachten
 
Dann musst Du dem Debugger sagen, er soll diese(n) Exception(typ) ignorieren.

jaenicke 6. Jan 2015 04:34

AW: try.......except....end; - Compiler soll dies beachten
 
Zitat:

Zitat von Bladefire (Beitrag 1285483)
Wenn beim Debuggen ein Fehler bei "x:=1" auftritt, dann bleibt der debugger stehen und führt nicht automatisch den except teil stattdesen aus.

Ich würde es gerne haben das delphi beim debuggen automatisch den except teil hernimmt, wenn der try teil einen fehler hat.

Normalerweise möchte man beim Debuggen solche Fehler ja mitbekommen. Deshalb hält der Debugger erst einmal an. Wenn du dann fortsetzt, wird aber der Teil unter except ausgeführt, so als ob du das Programm ohne Debugger gestartet hättest.

Wenn du das nicht möchtest, kannst du wie mkinzler schon geschrieben hat den Exceptiontyp ignorieren. In einigermaßen aktuellen Delphiversionen geht das direkt in dem Dialog, den der Debugger anzeigt, in alten Versionen nur über die Optionen.

himitsu 6. Jan 2015 06:29

AW: try.......except....end; - Compiler soll dies beachten
 
Wird diese Exception denn oft ausgelöst?

Grundsätzlich wäre es besser, wenn man erstmal vermeidet, daß eine Exception überhaupt ausgelöst wird ... dann braucht man dem Debugger auch keine Ausnahme beibringen. :stupid:
Delphi-Quellcode:
try
  i := StrToInt('abc');
except
  i := 0;
end;

Dejan Vu 6. Jan 2015 07:03

AW: try.......except....end; - Compiler soll dies beachten
 
Zitat:

Zitat von himitsu (Beitrag 1285512)
Grundsätzlich wäre es besser, wenn man erstmal vermeidet, daß eine Exception überhaupt ausgelöst wird ...

Das ist mir zu grundsätzlich.
Vielleicht so: Grundsätzlich wäre es besser, wenn der happy path programmiert wird, d.h. man geht z.B. davon aus, das der String eine Zahl ist (wenn man davon ausgehen kann), die Verbindung zustande kommt, der Divisor <> 0 ist (wenn das kein Sonderfall, d.h. Bestandteil der Formel ist) usw.

Als Prüfung, ob der String eine Zahl ist, eignet sich das try-except-pattern nicht, da hast Du vollkommen recht.
Delphi-Quellcode:
// Happy Path
try
  DoThis;
  DoThat;
  C := A/B;
  Number:= StrToInt(aString);
except
  ShowMessage('This did not work properly');
end;

// Prüfung
if TryStrToInt(aString, Number) then
  Number := StrToInt(aString);
else
  ShowMessage('Cannot convert'); // Oder mach sonst irgendwas

if Not IsZero(B) then C:=A/B else c:= NaN;

if CanConnectTo(URL) then
  ConnectTo(URL)
else
  ShowMessage('Cannot connect to '+URL);

jobo 6. Jan 2015 08:03

AW: try.......except....end; - Compiler soll dies beachten
 
OT-Korinthenmodus
Zitat:

Zitat von himitsu (Beitrag 1285512)
Wird diese Exception denn oft ausgelöst?

Grundsätzlich wäre es besser, wenn man erstmal vermeidet, daß eine Exception überhaupt ausgelöst wird ... dann braucht man dem Debugger auch keine Ausnahme beibringen. :stupid:
Delphi-Quellcode:
try
  i := StrToInt('abc');
except
  i := 0;
end;

Das schreit doch nach StrToIntDef oder hast Du hier nur aus Versehen aufgehört?

@happy path (grundsätzlich)
Besonders happy wäre ich oder der Anwender vielleicht mit der Original Fehlernummer/-Meldung und einer Ausgabe der Variableninhalte, die zum Fehler geführt haben.
/OT-Korinthenmodus


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:59 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