# Boost Exception

### current_exception

#include <boost/exception_ptr.hpp>

    namespace
    boost
        {
        exception_ptr current_exception();
        }

#### Requirements:

The current_exception function must not be called outside of a catch block.

#### Returns:

- An exception_ptr that refers to the currently handled exception or a copy of the currently handled exception.
- If the function needs to allocate memory and the attempt fails, it returns an exception_ptr that refers to an instance of std::bad_alloc.

#### Throws:

Nothing.

#### Notes:

- It is unspecified whether the return values of two successive calls to current_exception refer to the same exception object.
- Correct implementation of current_exception may require compiler support, unless enable_current_exception was used at the time the currently handled exception object was passed to throw. Whenever current_exception fails to properly copy the current exception object, it returns an exception_ptr to an object of type that is as close as possible to the original exception type, using unknown_exception as a final fallback. All such types derive from boost::exception, and:
  - if the original exception object derives from boost::exception, then the boost::exception sub-object of the object referred to by the returned exception_ptr is initialized by the boost::exception copy constructor;
  - if available, the exception contains the std::type_info of the original exception object, accessible through get_error_info<original_exception_type>.

### See Also:

Boost Exception
boost/exception_ptr.hpp
copy_exception
enable_current_exception
exception_ptr
Frequently Asked Questions
original_exception_type
unknown_exception