Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Exception ohne Fehlermeldung auslösen (https://www.delphipraxis.net/68519-exception-ohne-fehlermeldung-ausloesen.html)

ils566 1. Mai 2006 01:39


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

markusj 1. Mai 2006 06:45

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

himitsu 1. Mai 2006 06:53

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;

Die Muhkuh 1. Mai 2006 07:15

Re: Exception ohne Fehlermeldung auslösen
 
Was bitte ist das? :shock:

himitsu 1. Mai 2006 07:28

Re: Exception ohne Fehlermeldung auslösen
 
Die schnelle Variante, wo nicht erst ein "sinnloses" Objekt erstellt und freigegeben wird :roll:

[add]
Delphi-Quellcode:
Raise TObject(nil) at nil;
im Grunde gibt es ja zwei Varianten eine Exception auszulösen

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 ._.

ils566 1. Mai 2006 15:49

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:
FremdeUnit.pas

Function RestoreGraph()
begin
   ...
   raise EVideoCaptureError.Create (' ...you probably do not have ...');
   ...
end;
In meiner eigenen Unit rufe ich die Funktion RestoreGraph() auf und versuche den Fehler abzufangen:

Delphi-Quellcode:
MyUnit.pas
...
   try
      ...
      RestoreGraph ();
      ...
   except on EVideoCaptureError do
      ShowMessage ('Hier soll meine Fehlermeldung erscheinen');
   end;
...
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.
Oder etwa nicht?

grüße
ils

Hawkeye219 1. Mai 2006 16:31

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

ils566 1. Mai 2006 20:50

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

himitsu 1. Mai 2006 20:56

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.

ils566 1. Mai 2006 21:56

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 09:58 Uhr.
Seite 1 von 2  1 2      

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