AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Exception ohne Fehlermeldung auslösen

Ein Thema von ils566 · begonnen am 1. Mai 2006 · letzter Beitrag vom 2. Mai 2006
Antwort Antwort
Seite 1 von 2  1 2      
ils566

Registriert seit: 3. Dez 2005
28 Beiträge
 
#1

Exception ohne Fehlermeldung auslösen

  Alt 1. Mai 2006, 02:39
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
  Mit Zitat antworten Zitat
markusj

Registriert seit: 9. Dez 2005
Ort: Kandel
408 Beiträge
 
#2

Re: Exception ohne Fehlermeldung auslösen

  Alt 1. Mai 2006, 07:45
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
Markus
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#3

Re: Exception ohne Fehlermeldung auslösen

  Alt 1. Mai 2006, 07:53
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;
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#4

Re: Exception ohne Fehlermeldung auslösen

  Alt 1. Mai 2006, 08:15
Was bitte ist das?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#5

Re: Exception ohne Fehlermeldung auslösen

  Alt 1. Mai 2006, 08:28
Die schnelle Variante, wo nicht erst ein "sinnloses" Objekt erstellt und freigegeben wird

[add]
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 ._.
$2B or not $2B
  Mit Zitat antworten Zitat
ils566

Registriert seit: 3. Dez 2005
28 Beiträge
 
#6

Re: Exception ohne Fehlermeldung auslösen

  Alt 1. Mai 2006, 16:49
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
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Exception ohne Fehlermeldung auslösen

  Alt 1. Mai 2006, 17:31
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
  Mit Zitat antworten Zitat
ils566

Registriert seit: 3. Dez 2005
28 Beiträge
 
#8

Re: Exception ohne Fehlermeldung auslösen

  Alt 1. Mai 2006, 21:50
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#9

Re: Exception ohne Fehlermeldung auslösen

  Alt 1. Mai 2006, 21:56
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.
$2B or not $2B
  Mit Zitat antworten Zitat
ils566

Registriert seit: 3. Dez 2005
28 Beiträge
 
#10

Re: Exception ohne Fehlermeldung auslösen

  Alt 1. Mai 2006, 22:56
@himitsu,

muss ich leider anderes berichten. Ich habe das Programm direkt OHNE IDE aufgerufen und es kommen trotzdem beide Messages.

grüße
ils
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:58 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