20#include "error_codes.h"
35class ignite_error :
public std::exception {
38 ignite_error() =
default;
46 : m_message(std::move(message)) {}
53 explicit ignite_error(std::string message, std::int32_t flags) noexcept
54 : m_message(std::move(message))
63 explicit ignite_error(error::code code, std::string message) noexcept
65 , m_message(std::move(message)) {}
74 explicit ignite_error(error::code code, std::string message, std::exception_ptr cause) noexcept
76 , m_message(std::move(message))
77 , m_cause(std::move(cause)) {}
88 std::optional<std::string> java_st) noexcept
90 , m_message(std::move(message))
91 , m_trace_id(trace_id)
92 , m_java_stack_trace(java_st) {}
97 [[nodiscard]]
char const *
what() const noexcept
override {
return m_message.c_str(); }
102 [[nodiscard]]
const std::string &
what_str() const noexcept {
return m_message; }
127 [[nodiscard]]
const std::optional<std::string> &
get_java_stack_trace() const noexcept {
return m_java_stack_trace; }
134 [[nodiscard]] std::exception_ptr
get_cause() const noexcept {
return m_cause; }
142 [[nodiscard]] std::int32_t
get_flags() const noexcept {
return m_flags; }
153 m_extras.emplace(std::pair{std::move(key), std::any{std::move(value)}});
162 [[nodiscard]] std::optional<T>
get_extra(
const std::string &key)
const noexcept {
163 auto it = m_extras.find(key);
164 if (it == m_extras.end())
167 return std::any_cast<T>(it->second);
172 error::code m_status_code{error::code::INTERNAL};
175 std::string m_message;
181 std::optional<std::string> m_java_stack_trace;
184 std::exception_ptr m_cause;
187 std::int32_t m_flags{0};
190 std::map<std::string, std::any> m_extras;
std::optional< T > get_extra(const std::string &key) const noexcept
Definition ignite_error.h:162
ignite_error(error::code code, std::string message, uuid trace_id, std::optional< std::string > java_st) noexcept
Definition ignite_error.h:87
ignite_error(error::code code, std::string message, std::exception_ptr cause) noexcept
Definition ignite_error.h:74
const std::string & what_str() const noexcept
Definition ignite_error.h:102
std::int32_t get_flags() const noexcept
Definition ignite_error.h:142
ignite_error(std::string message, std::int32_t flags) noexcept
Definition ignite_error.h:53
std::exception_ptr get_cause() const noexcept
Definition ignite_error.h:134
const std::optional< std::string > & get_java_stack_trace() const noexcept
Definition ignite_error.h:127
char const * what() const noexcept override
Definition ignite_error.h:97
error::code get_status_code() const noexcept
Definition ignite_error.h:109
void add_extra(std::string key, T value)
Definition ignite_error.h:152
uuid get_trace_id() const noexcept
Definition ignite_error.h:118
ignite_error(std::string message) noexcept
Definition ignite_error.h:45
ignite_error(error::code code, std::string message) noexcept
Definition ignite_error.h:63
Universally unique identifier (UUID).
Definition uuid.h:32
static uuid random()
Definition uuid.cpp:25