コード例 #1
0
ファイル: exception_ptr.hpp プロジェクト: Aantonb/gotham
 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();
     }
コード例 #2
0
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));
}
コード例 #3
0
ファイル: exception.hpp プロジェクト: yukimori/jubatus_core
// 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;
}
コード例 #4
0
inline
exception_ptr
current_exception_unknown_boost_exception( riakboost::exception const & e )
{
    return riakboost::copy_exception(unknown_exception(e));
}
コード例 #5
0
inline
exception_ptr
current_exception_unknown_exception()
{
    return riakboost::copy_exception(unknown_exception());
}
コード例 #6
0
ファイル: exception_ptr.hpp プロジェクト: Aantonb/gotham
 inline
 exception_ptr
 current_exception_unknown_boost_exception( boost::exception const & e )
     {
     return exception_ptr(exception_detail::make_clone(unknown_exception(e)));
     }
コード例 #7
0
ファイル: exception_ptr.hpp プロジェクト: Aantonb/gotham
 inline
 exception_ptr
 current_exception_unknown_exception()
     {
     return exception_ptr(exception_detail::make_clone(unknown_exception()));
     }