xtd 0.2.0
Loading...
Searching...
No Matches
exception.h
Go to the documentation of this file.
1
4#pragma once
7#include "core_export.h"
8#include "optional.h"
9#include "literals.h"
10#include "object.h"
11#include "ptr.h"
12#include "size.h"
13#include "string.h"
14#include <cstdint>
15#include <stdexcept>
16#include <system_error>
17
19namespace xtd {
26 class core_export_ exception : public object, public std::exception {
27 public:
29
32 using exception_ref = std::optional<std::reference_wrapper<const std::exception>>;
34
36
50 exception(const xtd::string& message, const std::error_code& error, const xtd::diagnostics::stack_frame& information = xtd::diagnostics::stack_frame::empty());
61 exception(const xtd::string& message, const std::error_code& error, const xtd::string& help_link, const xtd::diagnostics::stack_frame& information = xtd::diagnostics::stack_frame::empty());
66 explicit exception(const std::exception& inner_exception, const xtd::diagnostics::stack_frame& information = xtd::diagnostics::stack_frame::empty());
71 exception(const xtd::string& message, const std::exception& inner_exception, const xtd::diagnostics::stack_frame& information = xtd::diagnostics::stack_frame::empty());
77 exception(const xtd::string& message, const std::exception& inner_exception, const std::error_code& error, const xtd::diagnostics::stack_frame& information = xtd::diagnostics::stack_frame::empty());
83 exception(const xtd::string& message, const std::exception& inner_exception, const xtd::string& help_link, const xtd::diagnostics::stack_frame& information = xtd::diagnostics::stack_frame::empty());
90 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& information = xtd::diagnostics::stack_frame::empty());
92
94 exception(const exception&) = default;
95 exception& operator =(const exception&) = default;
97
99
103 virtual const xtd::string& file_path() const noexcept;
104
107 virtual const xtd::string& help_link() const noexcept;
108
111 virtual std::error_code error_code() const noexcept;
112
115 virtual exception_ref inner_exception() const noexcept;
116
119 virtual xtd::size line_number() const noexcept;
120
123 virtual const xtd::string& member_name() const noexcept;
124
127 virtual const xtd::string& message() const noexcept;
128
131 virtual const xtd::string& name() const noexcept;
132
135 virtual xtd::string stack_trace() const noexcept;
137
139
143 xtd::string to_string() const noexcept override;
144
147 const char* what() const noexcept override;
149
151
155 static bool enable_stack_trace() noexcept;
158 static void enable_stack_trace(bool enable) noexcept;
160
161 private:
162 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& information);
163 xtd::string stack_trace_to_string() const noexcept;
164 const char* default_message() const noexcept;
165
166 struct data;
167 ptr<data> data_;
168 static bool enable_stack_trace_;
169 };
170}
Represents text as a sequence of character units.
Definition basic_string.h:79
Provides information about a xtd::diagnostics::stack_frame, which represents a function call on the c...
Definition stack_frame.h:46
static stack_frame empty() noexcept
Return an empty stack frame.
Defines the base class for predefined exceptions in the xtd namespace.
Definition exception.h:26
exception(const xtd::string &message, const xtd::string &help_link, const xtd::diagnostics::stack_frame &information=xtd::diagnostics::stack_frame::empty())
Create a new instance of class exception.
exception(const xtd::string &message, const std::exception &inner_exception, const xtd::string &help_link, const xtd::diagnostics::stack_frame &information=xtd::diagnostics::stack_frame::empty())
Create a new instance of class exception.
exception(const xtd::diagnostics::stack_frame &information=xtd::diagnostics::stack_frame::empty())
Create a new instance of class exception.
std::optional< std::reference_wrapper< const std::exception > > exception_ref
Optional reference wrapper on std::exception.
Definition exception.h:32
exception(const std::exception &inner_exception, const xtd::diagnostics::stack_frame &information=xtd::diagnostics::stack_frame::empty())
Create a new instance of class exception.
virtual const xtd::string & file_path() const noexcept
Gets file path where exception occurred.
exception(const xtd::string &message, const std::exception &inner_exception, const xtd::diagnostics::stack_frame &information=xtd::diagnostics::stack_frame::empty())
Create a new instance of class exception.
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 &information=xtd::diagnostics::stack_frame::empty())
Create a new instance of class exception.
exception(const xtd::string &message, const std::exception &inner_exception, const std::error_code &error, const xtd::diagnostics::stack_frame &information=xtd::diagnostics::stack_frame::empty())
Create a new instance of class exception.
exception(const xtd::string &message, const std::error_code &error, const xtd::diagnostics::stack_frame &information=xtd::diagnostics::stack_frame::empty())
Create a new instance of class exception.
exception(const xtd::string &message, const xtd::diagnostics::stack_frame &information=xtd::diagnostics::stack_frame::empty())
Create a new instance of class exception.
exception(const xtd::string &message, const std::error_code &error, const xtd::string &help_link, const xtd::diagnostics::stack_frame &information=xtd::diagnostics::stack_frame::empty())
Create a new instance of class exception.
Supports all classes in the xtd class hierarchy and provides low-level services to derived classes....
Definition object.h:42
Contains core_export_ keyword.
#define core_export_
Define shared library export.
Definition core_export.h:13
xtd::sptr< type_t > ptr
The xtd::ptr object is a shared pointer.
Definition ptr.h:27
size_t size
Represents a size of any object in bytes.
Definition size.h:23
Contains xtd literals.
The xtd namespace contains all fundamental classes to access Hardware, Os, System,...
Definition xtd_about_box.h:10
Contains xtd::object class.
Contains std::optional type and std::bad_optional_access exception.
Contains xtd::ptr type.
Contains xtd::diagnostics::stack_frame class.
Contains xtd::diagnostics::stack_trace class.
Contains xtd::string alias.
Contains xtd::drawing::size class.