The exception that is thrown when an arithmetic, casting, or conversion operation in a checked context results in an underflow. 
- Namespace
 - xtd 
 
- Library
 - xtd.core
 
- Examples
 - The following example demonstrates how to throw and catch an underflow_exception.  
 
 | 
| using  | exception_ref = xtd::optional< std::reference_wrapper< const xtd::exception > > | 
|   | Optional reference wrapper on std::exception.  
  | 
|   | 
|   | arithmetic_exception (const xtd::diagnostics::stack_frame &stack_frame=xtd::diagnostics::stack_frame::current()) | 
|   | Create a new instance of class arithmetic_exception.  
  | 
|   | 
|   | arithmetic_exception (const xtd::string &message, const xtd::diagnostics::stack_frame &stack_frame=xtd::diagnostics::stack_frame::current()) | 
|   | Create a new instance of class arithmetic_exception.  
  | 
|   | 
|   | arithmetic_exception (const xtd::string &message, const std::error_code &error, const xtd::diagnostics::stack_frame &stack_frame=xtd::diagnostics::stack_frame::current()) | 
|   | Create a new instance of class arithmetic_exception.  
  | 
|   | 
|   | arithmetic_exception (const xtd::string &message, const xtd::string &help_link, const xtd::diagnostics::stack_frame &stack_frame=xtd::diagnostics::stack_frame::current()) | 
|   | Create a new instance of class arithmetic_exception.  
  | 
|   | 
|   | arithmetic_exception (const xtd::string &message, const std::error_code &error, const xtd::string &help_link, const xtd::diagnostics::stack_frame &stack_frame=xtd::diagnostics::stack_frame::current()) | 
|   | Create a new instance of class arithmetic_exception.  
  | 
|   | 
|   | arithmetic_exception (const std::exception &inner_exception, const xtd::diagnostics::stack_frame &stack_frame=xtd::diagnostics::stack_frame::current()) | 
|   | Create a new instance of class arithmetic_exception.  
  | 
|   | 
|   | arithmetic_exception (const xtd::string &message, const std::exception &inner_exception, const xtd::diagnostics::stack_frame &stack_frame=xtd::diagnostics::stack_frame::current()) | 
|   | Create a new instance of class arithmetic_exception.  
  | 
|   | 
|   | arithmetic_exception (const xtd::string &message, const std::exception &inner_exception, const std::error_code &error, const xtd::diagnostics::stack_frame &stack_frame=xtd::diagnostics::stack_frame::current()) | 
|   | Create a new instance of class arithmetic_exception.  
  | 
|   | 
|   | arithmetic_exception (const xtd::string &message, const std::exception &inner_exception, const xtd::string &help_link, const xtd::diagnostics::stack_frame &stack_frame=xtd::diagnostics::stack_frame::current()) | 
|   | Create a new instance of class arithmetic_exception.  
  | 
|   | 
|   | arithmetic_exception (const xtd::string &message, const std::exception &inner_exception, const std::error_code &error, const xtd::string &help_link, const xtd::diagnostics::stack_frame &stack_frame=xtd::diagnostics::stack_frame::current()) | 
|   | Create a new instance of class arithmetic_exception.  
  | 
|   | 
|   | system_exception (const xtd::diagnostics::stack_frame &stack_frame=xtd::diagnostics::stack_frame::current()) | 
|   | Create a new instance of class xtd::system_exception.  
  | 
|   | 
|   | system_exception (const xtd::optional< xtd::string > &message, const xtd::diagnostics::stack_frame &stack_frame=xtd::diagnostics::stack_frame::current()) | 
|   | Create a new instance of class xtd::system_exception.  
  | 
|   | 
| template<typename exception_t >  | 
|   | system_exception (const xtd::optional< xtd::string > &message, const exception_t &inner_exception, const xtd::diagnostics::stack_frame &stack_frame=xtd::diagnostics::stack_frame::current()) | 
|   | Create a new instance of class xtd::system_exception.  
  | 
|   | 
|   | system_exception (const xtd::string &message, const std::error_code &error, const xtd::diagnostics::stack_frame &stack_frame=xtd::diagnostics::stack_frame::current()) | 
|   | Create a new instance of class xtd::system_exception.  
  | 
|   | 
|   | system_exception (const xtd::string &message, const xtd::string &help_link, const xtd::diagnostics::stack_frame &stack_frame=xtd::diagnostics::stack_frame::current()) | 
|   | Create a new instance of class xtd::system_exception.  
  | 
|   | 
|   | system_exception (const xtd::string &message, const std::error_code &error, const xtd::string &help_link, const xtd::diagnostics::stack_frame &stack_frame=xtd::diagnostics::stack_frame::current()) | 
|   | Create a new instance of class xtd::system_exception.  
  | 
|   | 
|   | system_exception (const std::exception &inner_exception, const xtd::diagnostics::stack_frame &stack_frame=xtd::diagnostics::stack_frame::current()) | 
|   | Create a new instance of class xtd::system_exception.  
  | 
|   | 
|   | system_exception (const xtd::string &message, const std::exception &inner_exception, const xtd::diagnostics::stack_frame &stack_frame=xtd::diagnostics::stack_frame::current()) | 
|   | Create a new instance of class xtd::system_exception.  
  | 
|   | 
|   | system_exception (const xtd::string &message, const std::exception &inner_exception, const std::error_code &error, const xtd::diagnostics::stack_frame &stack_frame=xtd::diagnostics::stack_frame::current()) | 
|   | Create a new instance of class xtd::system_exception.  
  | 
|   | 
|   | system_exception (const xtd::string &message, const std::exception &inner_exception, const xtd::string &help_link, const xtd::diagnostics::stack_frame &stack_frame=xtd::diagnostics::stack_frame::current()) | 
|   | Create a new instance of class xtd::system_exception.  
  | 
|   | 
|   | system_exception (const xtd::string &message, const std::exception &inner_exception, const std::error_code &error, const xtd::string &help_link, const xtd::diagnostics::stack_frame &stack_frame=xtd::diagnostics::stack_frame::current()) | 
|   | Create a new instance of class xtd::system_exception.  
  | 
|   | 
| virtual const xtd::string &  | file_path () const noexcept | 
|   | Gets file path where exception occurred.  
  | 
|   | 
| virtual xtd::size  | line_number () const noexcept | 
|   | Gets Line number where the exception occurred.  
  | 
|   | 
| virtual const xtd::string &  | member_name () const noexcept | 
|   | Gets file member where exception occurred.  
  | 
|   | 
| virtual const xtd::string &  | name () const noexcept | 
|   | Gets full class name the exception.  
  | 
|   | 
|   | exception (const xtd::diagnostics::stack_frame &stack_frame=xtd::diagnostics::stack_frame::current()) | 
|   | Create a new instance of class exception.  
  | 
|   | 
|   | exception (const xtd::optional< xtd::string > &message, const xtd::diagnostics::stack_frame &stack_frame=xtd::diagnostics::stack_frame::current()) | 
|   | Create a new instance of class exception.  
  | 
|   | 
| template<typename exception_t >  | 
|   | exception (const xtd::optional< xtd::string > &message, const exception_t &inner_exception, const xtd::diagnostics::stack_frame &stack_frame=xtd::diagnostics::stack_frame::current()) | 
|   | Create a new instance of class exception.  
  | 
|   | 
| virtual const xtd::string &  | help_link () const noexcept | 
|   | Gets a link to the help file associated with this exception.  
  | 
|   | 
| virtual void  | help_link (const xtd::string &value) noexcept | 
|   | Sets a link to the help file associated with this exception.  
  | 
|   | 
| virtual int32  | h_result () const noexcept | 
|   | Gets HRESULT, a coded numerical value that is assigned to a specific exception.  
  | 
|   | 
| virtual void  | h_result (int32 value) noexcept | 
|   | Sets HRESULT, a coded numerical value that is assigned to a specific exception.  
  | 
|   | 
| virtual const std::error_code &  | error_code () const noexcept | 
|   | Gets error associate to the exception.  
  | 
|   | 
| virtual void  | error_code (const std::error_code &value) noexcept | 
|   | Sets error associate to the exception.  
  | 
|   | 
| virtual exception_ref  | inner_exception () const noexcept | 
|   | Gets the exception instance that caused the current exception.  
  | 
|   | 
| virtual const xtd::string &  | message () const noexcept | 
|   | Gets message associate to the exception.  
  | 
|   | 
| virtual const xtd::string &  | source () const noexcept | 
|   | Gets the name of the application or the object that causes the error.  
  | 
|   | 
| virtual void  | source (const xtd::string &value) noexcept | 
|   | Sets the name of the application or the object that causes the error.  
  | 
|   | 
| virtual xtd::string  | stack_trace () const noexcept | 
|   | Gets a string representation of the immediate frames on the call stack.  
  | 
|   | 
| virtual const xtd::diagnostics::stack_frame &  | get_last_stack_frame () const noexcept | 
|   | Gets the last stack frame where the exception occurred.  
  | 
|   | 
| xtd::string  | to_string () const noexcept override | 
|   | Returns a string that represents the current exception.  
  | 
|   | 
| const char *  | what () const noexcept override | 
|   | Gets message associate to the exception.  
  | 
|   | 
|   | object ()=default | 
|   | Create a new instance of the ultimate base class object.  
  | 
|   | 
| virtual bool  | equals (const object &obj) const noexcept | 
|   | Determines whether the specified object is equal to the current object.  
  | 
|   | 
| virtual size_t  | get_hash_code () const noexcept | 
|   | Serves as a hash function for a particular type.  
  | 
|   | 
| virtual type_object  | get_type () const noexcept | 
|   | Gets the type of the current instance.  
  | 
|   | 
| template<typename object_t >  | 
| xtd::uptr< object_t >  | memberwise_clone () const | 
|   | Creates a shallow copy of the current object.  
  | 
|   | 
| static bool  | enable_stack_trace () noexcept | 
|   | Gets if the generation of the stack trace is enabled.  
  | 
|   | 
| static void  | enable_stack_trace (bool enable) noexcept | 
|   | Sets if the generation of the stack trace is enabled. @paran enable triue if stack trace enabled; otherwhise false.  
  | 
|   | 
| template<typename object_a_t , typename object_b_t >  | 
| static bool  | equals (const object_a_t &object_a, const object_b_t &object_b) noexcept | 
|   | Determines whether the specified object instances are considered equal.  
  | 
|   | 
| template<typename object_a_t , typename object_b_t >  | 
| static bool  | reference_equals (const object_a_t &object_a, const object_b_t &object_b) noexcept | 
|   | Determines whether the specified object instances are the same instance.  
  | 
|   |