![]() |
Eine (einzige) Exception blocken
Hiho,
und zwar habe ich folgenden Code:
Delphi-Quellcode:
Wie FDBconnector.ExecuteStoredProcedure vermuten lässt, handelt es sich um eine Funktion, die eine Stored Procedure ausführt.
try ///Wenn fm_SSFDI_GetJobs nicht existiert, Exception werfen
FDBconnector.ExecuteStoredProcedure_NoOutput(DBConnectionMode_UserDB,nil,'fm_SSFDI_GetJobs',inparam,ErrorAction_Throw); Btn_Abgl_Koord.Enabled:= true; F_SPJobs_exists:= true; except on e: exception do begin Btn_Abgl_Koord.Enabled:= false; F_SPJobs_exists:= false; end; end; Da die SP "fm_SSFDI_GetJobs" nicht in jeder meiner Datenbanken existiert und dann der Button "Btn_Abgl_Koord" jedesmal dem User eine Exception präsentieren würde, dachte ich mir, führe die Funktion vorher aus und wenn die SP nicht existiert, fang die Exception an der Stelle ab und disable den Button. Das funktioniert auch, nur kommt logischerweise in der IDE die Exception noch. Wie kann ich diese eine Exception abstellen? Da gibts doch bestimmt irgendeinen Schalter oder sowas, oder? MfG |
Re: Eine (einzige) Exception blocken
Unter D2006 ist das unter Tools - Options - Debugger Options - Borland Debuggers - Langugage Exceptions - Notify on Language Exceptions (Haken entfernen).
Aber kannst Du nicht aus den Systemtabellen der Datenbank auslesen, ob die SP exisitert? Würde ich für sauberer halten, als einfach zu probieren, ob es geht. Gruß, Jens |
Re: Eine (einzige) Exception blocken
Sicher, geht auch. Hab ich auch schon vorm Threaderstellen ausprobiert.
Aber interessieren würdes mich dennoch mal, obs da nen Schalter gibt, so in der Art
Delphi-Quellcode:
{$ ShowExceptionsInIDE off}
try ... except ... end; {$ ShowExceptionsInIDE on} |
Re: Eine (einzige) Exception blocken
Zitat:
Exceptions sind nunmal Ausnahmen, die man nicht unbekümmert in Kauf nehmen sollte.
Delphi-Quellcode:
Hättest dir die Tipparbeit sparen können. Da alle Objekte, die durch eine Ausnahme erzeugt werden, Nachfahren von Exception sind, wird der Code danach (in diesem Falle ein implizites "else raise") nicht ausgeführt.
try
//... except on E: Exception do begin //... end; //else // raise; // wird niemals ausgeführt end; Es entspricht also der verbreiteten Unart:
Delphi-Quellcode:
try
//... except //... end; |
Re: Eine (einzige) Exception blocken
Zitat:
|
Re: Eine (einzige) Exception blocken
Zitat:
Delphi-Quellcode:
weil das im Prinzip das gleiche ist wie einfach
try
dosomething except on E: Exception do begin dosomethingelse end; end;
Delphi-Quellcode:
?
try
dosomething except dosomethingelse end; edit: Und wieso ist dass dann eine Unart (jetzt mal vorausgesetzt man lässt den except-block nicht leer)? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:04 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