Is the following code according to the standard ?
#include <iostream>
#include <exception>
using namespace std;
int main()
{
auto terminationHandler = []()
{
try
{
rethrow_exception( current_exception() );
}
catch( exception const &exc )
{
cout << exc.what() << endl;
}
catch( ... )
{
}
};
set_terminate( terminationHandler );
try
{
throw bad_alloc();
}
catch( ... )
{
terminate();
}
}
This would be a nice aid for fatal situations that you still have some error-message.
I've got a function called exc_terminate() that's called like this:
exc_terminate( [&]() { ... do anything in local context ... } );
The lambda is executed within a try-catch-block and if an exception occurs the code terminates. I use this f.e. when a thread can't communicate with another thread because the synchronization-functions signalled a system_error.
Aucun commentaire:
Enregistrer un commentaire