NexusForce 1.0.0
A rigorously engineered full-stack C++ backend library.
载入中...
搜索中...
未找到
error_category.hpp
浏览该文件的文档.
1#ifndef NEFORCE_CORE_EXCEPTION_ERROR_CATEGORY_HPP__
2#define NEFORCE_CORE_EXCEPTION_ERROR_CATEGORY_HPP__
3
11
14NEFORCE_BEGIN_NAMESPACE__
15
16class error_code;
17class error_condition;
18
23
37class NEFORCE_API error_category : public icomparable<error_category> {
38public:
39 error_category() noexcept = default;
40 virtual ~error_category() noexcept = default;
41
42 error_category(const error_category&) = delete;
43 error_category& operator=(const error_category&) = delete;
44
49 NEFORCE_NODISCARD virtual const char* name() const noexcept = 0;
50
56 NEFORCE_NODISCARD virtual string message(int32_t ev) const = 0;
57
65 NEFORCE_NODISCARD virtual error_condition default_error_condition(int32_t ev) const noexcept;
66
73 NEFORCE_NODISCARD virtual bool equivalent(int code, const error_condition& condition) const noexcept;
74
81 NEFORCE_NODISCARD virtual bool equivalent(const error_code& code, int condition) const noexcept;
82
83 NEFORCE_NODISCARD bool equal_to(const error_category& rhs) const noexcept { return this == &rhs; }
84 NEFORCE_NODISCARD bool less_than(const error_category& rhs) const noexcept {
85 return less<const error_category*>()(this, &rhs);
86 }
87
92 static const error_category& generic() noexcept;
93
98 static const error_category& system() noexcept;
99};
100
101
108class NEFORCE_API generic_error_category final : public error_category {
109public:
110 NEFORCE_NODISCARD const char* name() const noexcept override { return "generic"; }
111
112 NEFORCE_NODISCARD string message(int32_t ev) const override;
113
114 NEFORCE_NODISCARD error_condition default_error_condition(int32_t ev) const noexcept override;
115};
116
121NEFORCE_API const error_category& generic_category() noexcept;
122
123inline error_code make_error_code(errc e) noexcept;
124inline error_condition make_error_condition(errc e) noexcept;
125
126inline const error_category& error_category::generic() noexcept { return generic_category(); }
127
128
135class NEFORCE_API system_error_category final : public error_category {
136public:
137 NEFORCE_NODISCARD const char* name() const noexcept override { return "system"; }
138
139 NEFORCE_NODISCARD string message(int32_t ev) const override;
140
141 NEFORCE_NODISCARD error_condition default_error_condition(int32_t ev) const noexcept override;
142};
143
148NEFORCE_API const error_category& system_category() noexcept;
149
150inline const error_category& error_category::system() noexcept { return system_category(); }
151 // ErrorCode
153
154NEFORCE_END_NAMESPACE__
155#endif // NEFORCE_CORE_EXCEPTION_ERROR_CATEGORY_HPP__
错误类别抽象基类
virtual error_condition default_error_condition(int32_t ev) const noexcept
获取错误码对应的默认错误条件
virtual string message(int32_t ev) const =0
获取错误码对应的可读描述
virtual bool equivalent(int code, const error_condition &condition) const noexcept
检查错误码与错误条件是否等价
virtual const char * name() const noexcept=0
获取错误类别名称
string message(int32_t ev) const override
获取错误码对应的可读描述
error_condition default_error_condition(int32_t ev) const noexcept override
获取错误码对应的默认错误条件
const char * name() const noexcept override
获取错误类别名称
string message(int32_t ev) const override
获取错误码对应的可读描述
error_condition default_error_condition(int32_t ev) const noexcept override
获取错误码对应的默认错误条件
const char * name() const noexcept override
获取错误类别名称
系统错误码枚举
int int32_t
32位有符号整数类型
const error_category & generic_category() noexcept
获取通用错误类别单例
errc
系统错误码枚举
static const error_category & generic() noexcept
获取通用错误类别单例
error_condition make_error_condition(errc e) noexcept
从 errc 枚举创建错误条件
const error_category & system_category() noexcept
获取系统错误类别单例
static const error_category & system() noexcept
获取系统错误类别单例
error_code make_error_code(errc e) noexcept
从 errc 枚举创建错误码
字符串类型别名和实用函数
可比较对象接口模板
小于比较仿函数