inline exception_ptr current_exception_unknown_std_exception( std::exception const & e ) { if( boost::exception const * be = dynamic_cast<boost::exception const *>(&e) ) return exception_ptr(exception_detail::make_clone(unknown_exception(*be))); else return current_exception_unknown_exception(); }
inline exception_ptr current_exception_unknown_std_exception( std::exception const & e ) { if( riakboost::exception const * be = get_boost_exception(&e) ) return current_exception_unknown_boost_exception(*be); else return riakboost::copy_exception(unknown_exception(e)); }
// Don't call without catch blocks inline exception_thrower_ptr get_current_exception() { exception_thrower_ptr ptr; try { throw; } catch (const std::bad_alloc& e) { // exception ptr = detail::current_std_exception(e); } catch (const std::bad_cast& e) { // exception ptr = detail::current_std_exception(e); } catch (const std::bad_exception& e) { // exception ptr = detail::current_std_exception(e); } catch (const std::bad_typeid& e) { // exception ptr = detail::current_std_exception(e); } catch (const std::domain_error& e) { // logic_error ptr = detail::current_std_exception(e); } catch (const std::invalid_argument& e) { // logic_error ptr = detail::current_std_exception(e); } catch (const std::length_error& e) { // logic_error ptr = detail::current_std_exception(e); } catch (const std::out_of_range& e) { // logic_error ptr = detail::current_std_exception(e); } catch (const std::logic_error& e) { // exception ptr = detail::current_std_exception(e); } catch (const std::range_error& e) { // runtime_error ptr = detail::current_std_exception(e); } catch (const std::overflow_error& e) { // runtime_error ptr = detail::current_std_exception(e); } catch (const std::underflow_error& e) { // runtime_error ptr = detail::current_std_exception(e); } catch (const std::ios_base::failure& e) { // exception ptr = detail::current_std_exception(e); } catch (const std::runtime_error& e) { // exception ptr = detail::current_std_exception(e); } catch (const jubatus_exception& e) { ptr = e.thrower(); } catch (const std::exception& e) { ptr = detail::current_std_exception(e); } catch (...) { ptr = unknown_exception().thrower(); } return ptr; }
inline exception_ptr current_exception_unknown_boost_exception( riakboost::exception const & e ) { return riakboost::copy_exception(unknown_exception(e)); }
inline exception_ptr current_exception_unknown_exception() { return riakboost::copy_exception(unknown_exception()); }
inline exception_ptr current_exception_unknown_boost_exception( boost::exception const & e ) { return exception_ptr(exception_detail::make_clone(unknown_exception(e))); }
inline exception_ptr current_exception_unknown_exception() { return exception_ptr(exception_detail::make_clone(unknown_exception())); }