Exception und Threads
-
Hallo!
Wenn ein Thread eine Exception wirft, dann kann die eigentlich niemand mehr
fangen, oder?struct ExceptionBase: virtual std::exception, virtual boost::exception{}; struct FirstException: virtual ExceptionBase{}; struct SecondException: virtual ExceptionBase{};
Ich baue daher noch eine Try/Catch-Schale um den Thread herum:
void startMeAsThread() { try { someWork(); } catch(ExceptionBase& e) { pSavedException=new ExceptionBase(e); // ExceptionBase* pSavedException } }
damit man die Exception nach Ablauf des Threads untersuchen kann. Aber
das ist nicht zufriedenstellend, denn damit ist der Typ auf die Basisklasse
reduziert. Gibt es eine Technik, um beliebige Exceptions irgendwo abzulegen
und später mit dem exakten Typ erneut zu werfen? Man könnte dann eine
'nowThrowSavedExceptions()' Funktion machen...Danke
-
In C++0x gibt es
std::exception_ptr
, du könntest dir z.B. mal das Proposal N2179 oder die MSDN-Doku anschauen. Ansonsten hat Boost.Exception auch Lösungen parat.
-
Hallo Nexus!
Vielen Dank, das war sehr hilfreich. Ich habe von Dir hier schon einige gute Beiträge gelesen. Großes Lob dafür!
lg
-
Vielen Dank, schön dass ich helfen konnte