NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
error_category.hpp
1#ifndef NEFORCE_CORE_EXCEPTION_ERROR_CATEGORY_HPP__
2#define NEFORCE_CORE_EXCEPTION_ERROR_CATEGORY_HPP__
5NEFORCE_BEGIN_NAMESPACE__
6
7class error_code;
8class error_condition;
9
10class error_category : public icomparable<error_category> {
11public:
12 error_category() noexcept = default;
13 virtual ~error_category() noexcept = default;
14
15 error_category(const error_category&) = delete;
16 error_category& operator=(const error_category&) = delete;
17
18 virtual const char* name() const noexcept = 0;
19 virtual string message(int32_t ev) const = 0;
20
21 virtual error_condition default_error_condition(int32_t ev) const noexcept;
22
23 virtual bool equivalent(int code, const error_condition& condition) const noexcept;
24 virtual bool equivalent(const error_code& code, int condition) const noexcept;
25
26 bool operator==(const error_category& rhs) const noexcept { return this == &rhs; }
27 bool operator<(const error_category& rhs) const noexcept { return less<const error_category*>()(this, &rhs); }
28};
29
30
31class NEFORCE_API generic_error_category final : public error_category {
32public:
33 NEFORCE_NODISCARD const char* name() const noexcept override { return "generic"; }
34
35 NEFORCE_NODISCARD string message(int32_t ev) const override;
36
37 NEFORCE_NODISCARD error_condition default_error_condition(int32_t ev) const noexcept override;
38};
39
40NEFORCE_API const error_category& generic_category() noexcept;
41
42inline error_code make_error_code(errc e) noexcept;
43inline error_condition make_error_condition(errc e) noexcept;
44
45
46class NEFORCE_API system_error_category final : public error_category {
47public:
48 NEFORCE_NODISCARD const char* name() const noexcept override { return "system"; }
49
50 NEFORCE_NODISCARD string message(int32_t ev) const override;
51
52 NEFORCE_NODISCARD error_condition default_error_condition(int32_t ev) const noexcept override;
53};
54
55NEFORCE_API const error_category& system_category() noexcept;
56
57NEFORCE_END_NAMESPACE__
58#endif // NEFORCE_CORE_EXCEPTION_ERROR_CATEGORY_HPP__
系统错误码枚举
int int32_t
32位有符号整数类型
errc
系统错误码枚举
NEFORCE_ALWAYS_INLINE_INLINE bool name(char *buffer, size_t size)
获取当前线程名称
字符串类型别名和实用函数
可比较对象接口模板