
Since the debugger tells you that the exception has been thrown, the only way to get the behavior you're observing is if you catch it.
Well, it also tells me that the exception is unhandled(!)... but the thread survives: First-chance exception at 0x7c812aeb (kernel32.dll) in XXX.exe: Microsoft C++ exception: boost::exception_detail::clone_implMyNamespace::error at memory location 0x0529a500.. Unhandled exception at 0x7c812aeb (kernel32.dll) in XXX.exe: Microsoft C++ exception: boost::exception_detail::clone_implMyNamespace::error at memory location 0x0529a500..
Try setting a break point in your exception's destructor. Since you're deriving from boost::exception, you can set the break point at boost::~exception(), in boost/exception/exception.hpp, line 254. It should hit at the closing } in the exception handler.
The ~exception() is called several times (probably the exception object is copied) at the closing "}" of: throw_exception.hpp: template<class E> inline void throw_exception( E const & e ) Then the execution proceeds to the breakpoint at the line after BOOST_THROW_EXCEPTION