I'm interested in using the infrastructure in Boost.Exception without using using boost::exception or deriving from it. Is this possible, if so, how? From the documentation, it seems so, but the documentation is not totally clear on this. From what I deduced, one should do: class my_exception {}; //1 throw boost::enable_current_exception(my_exception()); //2 catch(my_exception & ex) { /do stuff .... boost::rethrow_exception(boost::current_exception()); } Though, http://www.boost.org/doc/libs/1_46_1/libs/exception/doc/enable_current_excep... states: Note: Instead of using the throw keyword directly, it is preferable to call boost::throw_exception. This is guaranteed to throw an exception that derives from boost::exception and supports the exception_ptr functionality. And it's not very clear what exactly are the requirements for supporting exception_ptr functionality if one doesn't derive from boost::exception. Thanks, Mostafa