C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Callback bei Exception (throw)

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (German)
View previous topic :: View next topic  
Author Message
Steffen Liersch
Guest





PostPosted: Mon Oct 18, 2004 3:08 pm    Post subject: Callback bei Exception (throw) Reply with quote



Hallo Leute,

ist es in C++ irgendwie möglich, bei jedem Auslösen einer Exception einen Aufruf einer Callback-Funktion zu bekommen (vielleicht sogar gleich mit Informationen über die erzeugte Exception)?

Mich interessieren nicht nur meine selbstdefinierten Exceptions, sondern auch "fremde" Exceptionklassen. Ziel ist es, Exceptions zu protokollieren. Ein zentraler Exceptionhandler würde nichts nützen, da die Protokollierung dann zu spät erfolgt, da vorherige Exception-Handler und finally-Bereiche ja auch Protokolleinträge verursachen können.

Vielen Dank und viele Grüße,
Steffen Liersch

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
Back to top
Falk Tannhäuser
Guest





PostPosted: Mon Oct 18, 2004 9:15 pm    Post subject: Re: Callback bei Exception (throw) Reply with quote



Steffen Liersch wrote:

Quote:
ist es in C++ irgendwie möglich, bei jedem Auslösen einer Exception einen Aufruf einer Callback-Funktion zu bekommen (vielleicht sogar gleich mit Informationen über die erzeugte Exception)?

Innerhalb deiner eigenen Ausnahme-Klassenhierarchie würde es wohl reichen,
die Callbackfunktion von den Konstruktoren der Basisklasse an der Wurzel dieser
Hierarchie aufzurufen. Allerdings kennt man in dessen Kontext nicht den
Typen der abgeleiteten Exceptionsklasse, welche letztendlich konstruiert
wird. Außerdem wird natürlich der Callback auch aufgerufen, wenn man eine
Exception konstruiert, die man dann aber nicht wirft (aber andererseits,
warum sollte man dies tun?)

Quote:

Mich interessieren nicht nur meine selbstdefinierten Exceptions, sondern auch "fremde" Exceptionklassen. Ziel ist es, Exceptions zu protokollieren. Ein zentraler Exceptionhandler würde nichts nützen, da die Protokollierung dann zu spät erfolgt, da vorherige Exception-Handler und finally-Bereiche ja auch Protokolleinträge verursachen können.

Hmmm... In gut geschriebenem Code sollten alle Exceptionsklassen wohl direkt oder
indirekt von std::exception ableiten - doch an deren Konstruktoren (Default-
und Kopierkonstruktor) kommst du mit standardkonformen Mitteln nicht heran.
Wenn du mit einem nicht portablen Hack leben kannst, versuche, diese beiden
durch deine eigene Version zu ersetzen.
Im allgemeinen Fall, wenn mit Ausnahmen rumgeschmissen wird, die keine
Klassentypen sind (z.B. 'throw 42;'), lässt sich wohl kaum was machen...

'finally' gibt es übrigens zwar in Java, doch nicht in C++.

MfG
Falk

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Rolf Magnus
Guest





PostPosted: Mon Oct 18, 2004 11:06 pm    Post subject: Re: Callback bei Exception (throw) Reply with quote



Steffen Liersch wrote:

Quote:
Hallo Leute,

ist es in C++ irgendwie möglich, bei jedem Auslösen einer Exception einen
Aufruf einer Callback-Funktion zu bekommen (vielleicht sogar gleich mit
Informationen über die erzeugte Exception)?

Nein, zumindest nicht mit Bordmitteln. Vielleicht bietet dein Compiler
sowas, aber dazu müßtest du in einer Gruppe, die diesen Compiler zum Thema
hat, fragen.

Quote:
Mich interessieren nicht nur meine selbstdefinierten Exceptions, sondern
auch "fremde" Exceptionklassen. Ziel ist es, Exceptions zu protokollieren.

Wozu? Ich könnte mir vorstellen, daß die meisten Exceptions eher
uninteressant sind.

Quote:
Ein zentraler Exceptionhandler würde nichts nützen, da die Protokollierung
dann zu spät erfolgt, da vorherige Exception-Handler und finally-Bereiche
ja auch Protokolleinträge verursachen können.

'finally' gibt es in C++ nicht.

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (German) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.