Does code below work correctly? (C++0x fashion)
=================================================================
std::exception_ptr g_ex;
//global variable is no good, may be wrapped into callback params.
void my_callback()
{
try
{
callback_cpp_impl(); // may throw
}
catch(...)
{
assert(g_ex==nullptr);
g_ex = std::current_exception();
}
}
void foo()
{
try
{
g_ex = nullptr;
call_C(&my_callback);
if( g_ex!=nullptr )
std::rethrow_exception(g_ex);
}
catch... // normal catch as if the exception is thrown locally.
}
--------------------------------------------------
From: "Steven Watanabe"
AMDG
Timothy Madden wrote:
In a callback function I need to store and save an exception object for until the callback is finished and the control is returned to my application code. The callback is invoked by the C language code in minizip library from zlib-1.2.3 contrib directory, and I need to throw the exception when control returns to my application invoking minizip functions.
This is true for any exception that might get thrown and caught in my callback, so I would like to do that for any exception type.
However how can I store a thrown object for later re-throw without the actual exception type ? Is there a way to do that ?
I think this is what boost::exception_ptr is for. http://www.boost.org/libs/exception/doc/exception_ptr.html
In Christ, Steven Watanabe
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users