The boost::execution exception is an exception used by the Execution Monitor to report problems detected during a monitored function run. It intentionally does not allocate any memory so as to be safe for use when there is a lack of memory.
class execution_exception { public: execution_exception( error_code ec, const_string what_msg ); enum error_code { cpp_exception_error, // see note (1) below user_error, // user reported nonfatal error system_error, // see note (2) below timeout_error, // only detectable on certain platforms user_fatal_error, // user reported fatal error system_fatal_error // see note (2) below }; error_code code() const; // use this method to get an error code for the exception const_string what() const; // use this method to get an error message for the exception };
Note 1: Only uncaught C++ exceptions are treated as errors. If the application catches a C++ exception, this exception will never reach the Execution Monitor.
Note 2: These errors include UNIX signals and Windows structured exceptions. They are often initiated by hardware traps.
The implementation decides what is a fatal_system_exception and what is just a system_exception. Fatal errors are so likely to have corrupted machine state (like a stack overflow or addressing exception), so it is unreasonable to continue execution in this case.