![]() |
Exception ohne Fehlermeldung auslösen
hallo Leute,
vielleicht stehe ich gerade auf einer langen Leitung ... Gibt es eine Möglichkeit eine Exception auszulösen ohne eine Fehlermeldung anzuzeigen? In der Online-Hilfe gibt es für die Exception nur eine Create-Prozedur mit einem Fehlerstring. Ich möchte aber gar keine Fehlermeldung ausgeben, sondern nur eine Status-Variable entsprechend setzen. Beispiel: type EMyException: class(Exception); end; ... try irgendwas raise EMyException.Create(''); except on EMyException do status := false; end; Bin für alle Hinweise dankbar. Grüße ils |
Re: Exception ohne Fehlermeldung auslösen
Setze doch gleich die Variable anstelle diesen Weg zu gehen ...
Du hast glück gehabt dass du noch nicht zusammengeschimpft wurdest. Exceptions sind zwar manchmal nötig, aber so wie du sie verwenden möchtest, ist das imho schlechter Programmierstil. Übersetze mal Exception (Ausnahme) .... allso sollst du nicht mit Exceptions um dich werfen. Ansonsten sollte dein Code bereits funktionieren, oder hakts irgendwo? mfG Markus |
Re: Exception ohne Fehlermeldung auslösen
ein paar [ Delphi]-Tags könnten da oben nicht Schaden ...
ansonsten hätt ich da 'ne Exception one Excepion-Objekt ._. Is aber auch nur 'ne extreme Ausnahme ... 's is halt nicht so einfach aus merheren rekursiven Funktionsaufrufen und einigen Schleifen rauszuspringen -.-''
Delphi-Quellcode:
Try
... Raise TObject(nil) at nil; .. Except Status := False; End; |
Re: Exception ohne Fehlermeldung auslösen
Was bitte ist das? :shock:
|
Re: Exception ohne Fehlermeldung auslösen
Die schnelle Variante, wo nicht erst ein "sinnloses" Objekt erstellt und freigegeben wird :roll:
[add]
Delphi-Quellcode:
im Grunde gibt es ja zwei Varianten eine Exception auszulösen
Raise TObject(nil) at nil;
Raise ExceptionObject; und Raise ExceptionObject at Pointer; (wofür der Pointer ist, kann man in der OH unter "raise (reserviertes Wort)" nachlesen) Wobei ja normaler Weise das ExceptionObjekt per TException.Create... erzicht und an RAISE übergeben ... ta hier wird halt mal kein ExceptionObjekt erzeicht sondern nichts (nil vom Typ TObject) übergeben. Allerdings kann man dann zwischen EXCEPT und END nicht mehr viel machen, was die Exception selbst angeht, da es ja keine gibt ._. |
Re: Exception ohne Fehlermeldung auslösen
danke für Eure Hinweise. Ich denke, ich muss das noch etwas genauer erläutern.
Ich habe eine Unit, die nicht von mir erstellt wurde. Die Unit löst an einer bestimmten Stelle eine Exception mit einem englischen Text aus.
Delphi-Quellcode:
In meiner eigenen Unit rufe ich die Funktion RestoreGraph() auf und versuche den Fehler abzufangen:
FremdeUnit.pas
Function RestoreGraph() begin ... raise EVideoCaptureError.Create (' ...you probably do not have ...'); ... end;
Delphi-Quellcode:
Wenn ich das Programm wie oben dargestellt ausführe, kommt zuerst die 'englische' Meldung und erst dannach meine. Eigentlich dachte ich, wenn ich die Exception abfange, müsste doch mein except-block ausgeführt werden.
MyUnit.pas
... try ... RestoreGraph (); ... except on EVideoCaptureError do ShowMessage ('Hier soll meine Fehlermeldung erscheinen'); end; ... Oder etwa nicht? grüße ils |
Re: Exception ohne Fehlermeldung auslösen
Hallo ils,
nur wenn du das Programm aus der IDE heraus startest, werden beide Meldungen angezeigt. Bei einem Start aus dem Explorer (z.B. durch einen Doppelklick) wird nur die letzte Meldung (also deine) angezeigt. Die Meldungen innerhalb der IDE kannst du in den Debugger-Optionen ausschalten. Gruß Hawkeye |
Re: Exception ohne Fehlermeldung auslösen
Hallo Hawkeye,
bei mir kommen leider beide Meldungen nacheinander. Zuerst die Meldung die abgefangen werden sollte und dannach meine eigene. Ich hab das Programm von einem anderen Rechner aus aufgerufen. Eigentlich war ich der Meinung, das es so ist, wie du geschrieben hast. Deshabl fängt man doch die Exception ab, oder? grüße ils |
Re: Exception ohne Fehlermeldung auslösen
Die Exception wird schon abgefangen, aber damit man besser debuggen kann, zeigt der Debuger diese erste Meldung an (damit man weiß was los ist) ... ohne den Debuger kommt diese Meldung nicht mehr.
|
Re: Exception ohne Fehlermeldung auslösen
@himitsu,
muss ich leider anderes berichten. Ich habe das Programm direkt OHNE IDE aufgerufen und es kommen trotzdem beide Messages. grüße ils |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:10 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