標準ライブラリヘッダ <system_error>
提供: cppreference.com
このヘッダはエラー処理ライブラリの一部です。
インクルード | ||
(C++20) | 三方比較演算子サポート | |
クラス | ||
(C++11) | エラーカテゴリのための基底クラス (クラス) | |
(C++11) | 移植性のあるエラーコードを保持します (クラス) | |
(C++11) | 標準の <cerrno> のマクロ定数をすべて並べた std::error_condition 用の列挙型 (クラス) | |
(C++11) | プラットフォーム依存のエラーコードを保持します (クラス) | |
(C++11) | error_code を持つ状況を報告するために使用される例外クラス (クラス) | |
(C++11) | クラスを error_code 列挙型として識別します (クラステンプレート) | |
(C++11) | std::error_condition としての列挙型を識別します (クラステンプレート) | |
(C++11) | std::error_code に対するハッシュサポート (クラステンプレートの特殊化) | |
前方宣言 | ||
ヘッダ <functional> で定義 | ||
(C++11) | ハッシュ関数オブジェクト (クラステンプレート) | |
関数 | ||
(C++11) | 一般エラーカテゴリを識別します (関数) | |
(C++11) | オペレーティングシステムのエラーカテゴリを識別します (関数) | |
(C++20で削除)(C++20で削除)(C++20) | 2つの error_code を比較します (関数) | |
値とカテゴリ名を出力ストリームに出力します (関数) | ||
(C++11) | std::errc のエラーコードを構築します (関数) | |
(C++20で削除)(C++20で削除)(C++20) | error_condition と error_code を比較します (関数) | |
std::errc のエラーコンディションを構築します (関数) |
[編集]概要
#include <compare> namespace std {class error_category;const error_category& generic_category()noexcept;const error_category& system_category()noexcept; class error_code;class error_condition;class system_error; template<class T>struct is_error_code_enum :public false_type {}; template<class T>struct is_error_condition_enum :public false_type {}; enumclass errc { address_family_not_supported, // EAFNOSUPPORT address_in_use, // EADDRINUSE address_not_available, // EADDRNOTAVAIL already_connected, // EISCONN argument_list_too_long, // E2BIG argument_out_of_domain, // EDOM bad_address, // EFAULT bad_file_descriptor, // EBADF bad_message, // EBADMSG broken_pipe, // EPIPE connection_aborted, // ECONNABORTED connection_already_in_progress, // EALREADY connection_refused, // ECONNREFUSED connection_reset, // ECONNRESET cross_device_link, // EXDEV destination_address_required, // EDESTADDRREQ device_or_resource_busy, // EBUSY directory_not_empty, // ENOTEMPTY executable_format_error, // ENOEXEC file_exists, // EEXIST file_too_large, // EFBIG filename_too_long, // ENAMETOOLONG function_not_supported, // ENOSYS host_unreachable, // EHOSTUNREACH identifier_removed, // EIDRM illegal_byte_sequence, // EILSEQ inappropriate_io_control_operation, // ENOTTY interrupted, // EINTR invalid_argument, // EINVAL invalid_seek, // ESPIPE io_error, // EIO is_a_directory, // EISDIR message_size, // EMSGSIZE network_down, // ENETDOWN network_reset, // ENETRESET network_unreachable, // ENETUNREACH no_buffer_space, // ENOBUFS no_child_process, // ECHILD no_link, // ENOLINK no_lock_available, // ENOLCK no_message_available, // ENODATA no_message, // ENOMSG no_protocol_option, // ENOPROTOOPT no_space_on_device, // ENOSPC no_stream_resources, // ENOSR no_such_device_or_address, // ENXIO no_such_device, // ENODEV no_such_file_or_directory, // ENOENT no_such_process, // ESRCH not_a_directory, // ENOTDIR not_a_socket, // ENOTSOCK not_a_stream, // ENOSTR not_connected, // ENOTCONN not_enough_memory, // ENOMEM not_supported, // ENOTSUP operation_canceled, // ECANCELED operation_in_progress, // EINPROGRESS operation_not_permitted, // EPERM operation_not_supported, // EOPNOTSUPP operation_would_block, // EWOULDBLOCK owner_dead, // EOWNERDEAD permission_denied, // EACCES protocol_error, // EPROTO protocol_not_supported, // EPROTONOSUPPORT read_only_file_system, // EROFS resource_deadlock_would_occur, // EDEADLK resource_unavailable_try_again, // EAGAIN result_out_of_range, // ERANGE state_not_recoverable, // ENOTRECOVERABLE stream_timeout, // ETIME text_file_busy, // ETXTBSY timed_out, // ETIMEDOUT too_many_files_open_in_system, // ENFILE too_many_files_open, // EMFILE too_many_links, // EMLINK too_many_symbolic_link_levels, // ELOOP value_too_large, // EOVERFLOW wrong_protocol_type, // EPROTOTYPE}; template<>struct is_error_condition_enum<errc>: true_type {}; // non-member functions error_code make_error_code(errc e)noexcept; template<class charT, class traits> basic_ostream<charT, traits>& operator<<(basic_ostream<charT, traits>& os, const error_code& ec); // non-member functions error_condition make_error_condition(errc e)noexcept; // comparison functionsbool operator==(const error_code& lhs, const error_code& rhs)noexcept;bool operator==(const error_code& lhs, const error_condition& rhs)noexcept;bool operator==(const error_condition& lhs, const error_condition& rhs)noexcept; strong_ordering operator<=>(const error_code& lhs, const error_code& rhs)noexcept; strong_ordering operator<=>(const error_condition& lhs, const error_condition& rhs)noexcept; // hash supporttemplate<class T>struct hash;template<>struct hash<error_code>;template<>struct hash<error_condition>; // system error supporttemplate<class T>inlineconstexprbool is_error_code_enum_v = is_error_code_enum<T>::value;template<class T>inlineconstexprbool is_error_condition_enum_v = is_error_condition_enum<T>::value;}
[編集]クラス std::error_category
namespace std {class error_category {public:constexpr error_category()noexcept;virtual ~error_category(); error_category(const error_category&)= delete; error_category& operator=(const error_category&)= delete;virtualconstchar* name()constnoexcept=0;virtual error_condition default_error_condition(int ev)constnoexcept;virtualbool equivalent(int code, const error_condition& condition)constnoexcept;virtualbool equivalent(const error_code& code, int condition)constnoexcept;virtual string message(int ev)const=0; bool operator==(const error_category& rhs)constnoexcept; strong_ordering operator<=>(const error_category& rhs)constnoexcept;}; const error_category& generic_category()noexcept;const error_category& system_category()noexcept;}
[編集]クラス std::error_code
namespace std {class error_code {public:// constructors error_code()noexcept; error_code(int val, const error_category& cat)noexcept;template<class ErrorCodeEnum> error_code(ErrorCodeEnum e)noexcept; // modifiersvoid assign(int val, const error_category& cat)noexcept;template<class ErrorCodeEnum> error_code& operator=(ErrorCodeEnum e)noexcept;void clear()noexcept; // observersint value()constnoexcept;const error_category& category()constnoexcept; error_condition default_error_condition()constnoexcept; string message()const;explicit operator bool()constnoexcept; private:int val_;// exposition onlyconst error_category* cat_;// exposition only}; // non-member functions error_code make_error_code(errc e)noexcept; template<class charT, class traits> basic_ostream<charT, traits>& operator<<(basic_ostream<charT, traits>& os, const error_code& ec);}
[編集]クラス std::error_condition
namespace std {class error_condition {public:// constructors error_condition()noexcept; error_condition(int val, const error_category& cat)noexcept;template<class ErrorConditionEnum> error_condition(ErrorConditionEnum e)noexcept; // modifiersvoid assign(int val, const error_category& cat)noexcept;template<class ErrorConditionEnum> error_condition& operator=(ErrorConditionEnum e)noexcept;void clear()noexcept; // observersint value()constnoexcept;const error_category& category()constnoexcept; string message()const;explicit operator bool()constnoexcept; private:int val_;// exposition onlyconst error_category* cat_;// exposition only};}
[編集]クラス std::system_error
namespace std {class system_error :public runtime_error {public: system_error(error_code ec, const string& what_arg); system_error(error_code ec, constchar* what_arg); system_error(error_code ec); system_error(int ev, const error_category& ecat, const string& what_arg); system_error(int ev, const error_category& ecat, constchar* what_arg); system_error(int ev, const error_category& ecat);const error_code& code()constnoexcept;constchar* what()constnoexcept override;};}