
Peter Dimov said: (by the date of Wed, 15 Nov 2006 19:18:22 +0200)
Janek Kozicki wrote:
Peter Dimov said: (by the date of Wed, 15 Nov 2006 15:54:14 +0200)
e.dismiss();
why this? destructor of e does the work. No need to e.dismiss() Dave pointed out that std::uncaught_exception() inside e's destructor can check the conditions upon which the destructor is called and to the necessary work depending on it.
uncaught_exception may still return true in a destructor that is called during an ordinary return.
~X: called during stack unwinding
calls f()
void f() { Y y; } // ~Y is called here, uncaught_exception is true
So I have an idea - maybe put catch{} block inside destructor? :) X::~X() { try { // try nothing. If exception is active, the catch() will get activated :) } catch(boost::exception& e) { e.gotcha(); throw; // wow. It is a throwing destructor. What do you think? } } I haven't tested that, maybe I'm just wrong :> -- Janek Kozicki |