# Boost Exception

### BOOST_THROW_EXCEPTION

#include <boost/throw_exception.hpp>

    #if !defined( BOOST_NO_EXCEPTIONS ) && !defined( BOOST_EXCEPTION_DISABLE )
        #include <boost/exception/exception.hpp>
        #include <boost/current_function.hpp>
        #define BOOST_THROW_EXCEPTION(x)\
            ::boost::throw_exception( ::boost::enable_error_info(x) <<\
            ::boost::throw_function(BOOST_CURRENT_FUNCTION) <<\
            ::boost::throw_file(__FILE__) <<\
            ::boost::throw_line((int)__LINE__) )
    #else
        #define BOOST_THROW_EXCEPTION(x) ::boost::throw_exception(x)
    #endif

This macro takes an exception object, records BOOST_CURRENT_FUNCTION, __FILE__ and __LINE__ in it, and forwards it to throw_exception. To recover this information at the catch site, use get_error_info; the information is also included in the message returned by diagnostic_information.

Boost Exception
boost/throw_exception.hpp