Boost.Test > Components > The Execution Monitor > boost::execution_exception

# boost::execution_exception

The boost::execution exception is an exception used by the Execution Monitor to report problems detected during controlled function run. It intentionally does not allocate any memory to be safe to use in case of 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, it will never reach the boost::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) that it is unreasonable to continue execution.