Wire Sysio Wire Sysion 1.0.0
Loading...
Searching...
No Matches
fc::unhandled_exception Class Reference

re-thrown whenever an unhandled exception is caught.Any exceptions thrown by 3rd party libraries that are not caught get wrapped in an unhandled_exception exception. More...

#include <exception.hpp>

Inheritance diagram for fc::unhandled_exception:
Collaboration diagram for fc::unhandled_exception:

Public Types

enum  code_enum { code_value = unhandled_exception_code }
 
- Public Types inherited from fc::exception
enum  code_enum { code_value = unspecified_exception_code }
 

Public Member Functions

 unhandled_exception (log_message &&m, std::exception_ptr e=std::current_exception())
 
 unhandled_exception (log_messages)
 
 unhandled_exception (const exception &)
 
std::exception_ptr get_inner_exception () const
 
virtual NO_RETURN void dynamic_rethrow_exception () const
 
virtual std::shared_ptr< exceptiondynamic_copy_exception () const
 
- Public Member Functions inherited from fc::exception
 exception (int64_t code=unspecified_exception_code, const std::string &name_value="exception", const std::string &what_value="unspecified")
 
 exception (log_message &&, int64_t code=unspecified_exception_code, const std::string &name_value="exception", const std::string &what_value="unspecified")
 
 exception (log_messages &&, int64_t code=unspecified_exception_code, const std::string &name_value="exception", const std::string &what_value="unspecified")
 
 exception (const log_messages &, int64_t code=unspecified_exception_code, const std::string &name_value="exception", const std::string &what_value="unspecified")
 
 exception (const exception &e)
 
 exception (exception &&e)
 
virtual ~exception ()
 
const char * name () const throw ()
 
int64_t code () const throw ()
 
const char * what () const noexcept override
 
const log_messagesget_log () const
 
void append_log (log_message m)
 
std::string to_detail_string (log_level ll=log_level::all) const
 
std::string to_string (log_level ll=log_level::info) const
 
std::string top_message () const
 
exceptionoperator= (const exception &copy)
 
exceptionoperator= (exception &&copy)
 

Additional Inherited Members

- Static Public Attributes inherited from fc::exception
static constexpr fc::microseconds format_time_limit = fc::milliseconds( 10 )
 
- Protected Attributes inherited from fc::exception
std::unique_ptr< detail::exception_impl > my
 

Detailed Description

The original exception is captured as a std::exception_ptr which may be rethrown. The std::exception_ptr does not propgate across process boundaries.

Definition at line 154 of file exception.hpp.

Member Enumeration Documentation

◆ code_enum

Enumerator
code_value 

Definition at line 157 of file exception.hpp.

157 {
159 };
@ unhandled_exception_code
for unhandled 3rd party exceptions
Definition exception.hpp:21

Constructor & Destructor Documentation

◆ unhandled_exception() [1/3]

fc::unhandled_exception::unhandled_exception ( log_message && m,
std::exception_ptr e = std::current_exception() )

Definition at line 65 of file exception.cpp.

66 :exception( fc::move(m) )
67 {
68 _inner = e;
69 }
exception(int64_t code=unspecified_exception_code, const std::string &name_value="exception", const std::string &what_value="unspecified")
Definition exception.cpp:93

◆ unhandled_exception() [2/3]

fc::unhandled_exception::unhandled_exception ( log_messages m)

Definition at line 74 of file exception.cpp.

75 :exception()
76 { my->_elog = fc::move(m); }
std::unique_ptr< detail::exception_impl > my

◆ unhandled_exception() [3/3]

fc::unhandled_exception::unhandled_exception ( const exception & r)

Definition at line 70 of file exception.cpp.

71 :exception(r)
72 {
73 }
const mie::Vuint & r
Definition bn.cpp:28

Member Function Documentation

◆ dynamic_copy_exception()

std::shared_ptr< exception > fc::unhandled_exception::dynamic_copy_exception ( ) const
virtual

This is equivalent to:

try { throwAsDynamic_exception(); }
catch( ... ) { return std::current_exception(); }

Reimplemented from fc::exception.

Definition at line 86 of file exception.cpp.

87 {
88 auto e = std::make_shared<unhandled_exception>( *this );
89 e->_inner = _inner;
90 return e;
91 }

◆ dynamic_rethrow_exception()

NO_RETURN void fc::unhandled_exception::dynamic_rethrow_exception ( ) const
virtual

Throw this exception as its most derived type.

Note
does not return.

Rethrows the exception restoring the proper type based upon the error code. This is used to propagate exception types across conversions to/from JSON

Reimplemented from fc::exception.

Definition at line 80 of file exception.cpp.

81 {
82 if( !(_inner == std::exception_ptr()) ) std::rethrow_exception( _inner );
84 }
virtual NO_RETURN void dynamic_rethrow_exception() const
Here is the call graph for this function:

◆ get_inner_exception()

std::exception_ptr fc::unhandled_exception::get_inner_exception ( ) const

Definition at line 78 of file exception.cpp.

78{ return _inner; }

The documentation for this class was generated from the following files: