![]() |
Delphi-Version: 6
Nur bestimmte exceptions abfangen/ignorieren
Hallo, ich möchte eine bestimmte Exception abfangen bzw. ignorieren. Gibt es irgendeinen Befehl ähnlich zu continue oder so, dass mein Programm dann einfach weitermacht?
Code:
try
blablub(iwas); except On E : Exception do if (E.ClassName = 'EIBInterBaseError') then -> ignorieren ?? else raise Exception.Create(E.Message); end; |
AW: Nur bestimmte exceptions abfangen/ignorieren
Delphi-Quellcode:
try
MachWas; except on E: EIrgendwasException do BehandleEIrgendwasException; on E: EWasAnderesException do BehandleEWasAnderesAxception; on E: Exception do BehandleAnderenExceptionTyp; end; |
AW: Nur bestimmte exceptions abfangen/ignorieren
Ja, ich kann aber keine Exceptions ignorieren, habe ich grade erfahren. Wäre ja auch zu schön des guten :cyclops:
|
AW: Nur bestimmte exceptions abfangen/ignorieren
Wenn man folgendes programmiert:
Code:
wird jede Exception ignoriert.
try
blablub(iwas); except end; Ohne zu testen gehe ich davon aus, dass dieses Konstrukt dann deine Bedingung erfüllt:
Code:
try
blablub(iwas); except On E : Exception do if (E.ClassName <> 'EIBInterBaseError') then raise Exception.Create(E.Message); end; |
AW: Nur bestimmte exceptions abfangen/ignorieren
Wieso?
Delphi-Quellcode:
Ob das ratsam ist, hängt vom Einzelfall ab. In der IDE wird die Exception beim Debuggen trotzdem geworfen.
// Fangen und nicht behandeln
on E: EMirEgalException do; |
AW: Nur bestimmte exceptions abfangen/ignorieren
Erstens niemals nicht über den Namen vegleichen.
Nachteil ist auch, dass der Name/Typ so nicht vom Compiler geprüft wird.
Delphi-Quellcode:
try
... except on E: Exception do if E is EIBInterBaseError then // nicht machen else raise; end;
Delphi-Quellcode:
oder wie bereits gezeigt
try
... except on E: Exception do if not (E is EIBInterBaseError) then raise; end;
Delphi-Quellcode:
try
... except on E: EIBInterBaseError do ; // nichts on E: Exception do raise; end; Zitat:
Denn rate mal was hier passiert.
Delphi-Quellcode:
try
try raise EIBInterBaseError.Create('peng'); except on E: Exception do raise Exception.Create(E.Message); // das Böse, wo der Typ sinnlos vernichtet wird ud Informationen verloren gehen end; except on E: EIBInterBaseError do ShowMessage('juhu'); on E: Exception do raise Exception.Create('Danke (sarkastisch)'); // oder ShowMessage mit ganz bösem Icon end; |
AW: Nur bestimmte exceptions abfangen/ignorieren
Zitat:
|
AW: Nur bestimmte exceptions abfangen/ignorieren
Nenn doch mal die genauen Fehlermeldungen, wahrscheinlich musst Du nur weitere Units einbinden.
|
AW: Nur bestimmte exceptions abfangen/ignorieren
Zitat:
Code:
[Fehler] bla.pas(442): Undefinierter Bezeichner: 'EIBInterBaseError'
if not (E is EIBInterBaseError) then
|
AW: Nur bestimmte exceptions abfangen/ignorieren
Also ich hab grad alle drei Varianten im Delphi 5 probiert, und alle lassen sich selbst dort einwandfrei nutzen. Statt EIBInterBaseError hab ich EConvertError eingesetzt, denn es geht ja nur ums Prinzip. Oder anders gesagt: Setze die für deinen Code passenden Exception-Typen ein.
Grüße Dalai |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:26 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 by Thomas Breitkreuz