 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Steffen Liersch Guest
|
Posted: Mon Oct 18, 2004 3:08 pm Post subject: Callback bei Exception (throw) |
|
|
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
|
Posted: Mon Oct 18, 2004 9:15 pm Post subject: Re: Callback bei Exception (throw) |
|
|
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
|
Posted: Mon Oct 18, 2004 11:06 pm Post subject: Re: Callback bei Exception (throw) |
|
|
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 |
|
 |
|
|
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
|
|