Improved error handling on thread exit

This commit is contained in:
Peter Conrad 2018-10-06 11:06:35 +02:00
parent 08a66f52d3
commit fc61ef3d04

View file

@ -80,11 +80,27 @@ namespace fc {
p->set_value();
exec();
} catch ( fc::exception& e ) {
wlog( "unhandled exception" );
p->set_exception( e.dynamic_copy_exception() );
if( !p->ready() )
{
wlog( "unhandled exception" );
p->set_exception( e.dynamic_copy_exception() );
}
else
{ // possibly shutdown?
std::cerr << "unhandled exception in thread '" << name << "'\n";
std::cerr << e.to_detail_string( log_level::warn );
}
} catch ( ... ) {
wlog( "unhandled exception" );
p->set_exception( std::make_shared<unhandled_exception>( FC_LOG_MESSAGE( warn, "unhandled exception: ${diagnostic}", ("diagnostic",boost::current_exception_diagnostic_information()) ) ) );
if( !p->ready() )
{
wlog( "unhandled exception" );
p->set_exception( std::make_shared<unhandled_exception>( FC_LOG_MESSAGE( warn, "unhandled exception: ${diagnostic}", ("diagnostic",boost::current_exception_diagnostic_information()) ) ) );
}
else
{ // possibly shutdown?
std::cerr << "unhandled exception in thread '" << name << "'\n";
std::cerr << boost::current_exception_diagnostic_information() << "\n";
}
}
} );
p->wait();