Standard library header <system_error> (C++11)
From cppreference.net
이 헤더는 error handling 라이브러리의 일부입니다.
포함 항목 |
||
|
(C++20)
|
3-way 비교 연산자 지원 | |
클래스 |
||
|
(C++11)
|
오류 카테고리의 기본 클래스
(클래스) |
|
|
(C++11)
|
이식 가능한 오류 코드를 보유함
(클래스) |
|
|
(C++11)
|
모든 표준
std::error_condition
열거형을 나열하는
<cerrno>
매크로 상수들
(클래스) |
|
|
(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)
|
두
error_code
를 비교
(함수) |
|
|
출력 스트림에 값과 카테고리 이름을 출력합니다
(함수) |
||
|
(C++11)
|
errc
열거형 값에 대한 오류 코드 생성
e
(함수) |
|
|
(C++20에서 제거됨)
(C++20에서 제거됨)
(C++20)
|
error_condition
과
error_code
를 비교합니다
(함수) |
|
|
(C++11)
|
errc
값
e
에 대한 오류 조건을 생성합니다
(함수) |
|
시놉시스
#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 {}; enum class 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; // 비교 함수 bool 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; // 해시 지원 template<class T> struct hash; template<> struct hash<error_code>; template<> struct hash<error_condition>; // 시스템 에러 지원 template<class T> inline constexpr bool is_error_code_enum_v = is_error_code_enum<T>::value; template<class T> inline constexpr bool 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; virtual const char* name() const noexcept = 0; virtual error_condition default_error_condition(int ev) const noexcept; virtual bool equivalent(int code, const error_condition& condition) const noexcept; virtual bool equivalent(const error_code& code, int condition) const noexcept; virtual string message(int ev) const = 0; bool operator==(const error_category& rhs) const noexcept; strong_ordering operator<=>(const error_category& rhs) const noexcept; }; const error_category& generic_category() noexcept; const error_category& system_category() noexcept; }
클래스 std::error_code
namespace std { class error_code { public: // 생성자 error_code() noexcept; error_code(int val, const error_category& cat) noexcept; template<class ErrorCodeEnum> error_code(ErrorCodeEnum e) noexcept; // 수정자 void assign(int val, const error_category& cat) noexcept; template<class ErrorCodeEnum> error_code& operator=(ErrorCodeEnum e) noexcept; void clear() noexcept; // 관찰자 int value() const noexcept; const error_category& category() const noexcept; error_condition default_error_condition() const noexcept; string message() const; explicit operator bool() const noexcept; private: int val_; // 설명 전용 const error_category* cat_; // 설명 전용 }; // 비멤버 함수 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: // 생성자 error_condition() noexcept; error_condition(int val, const error_category& cat) noexcept; template<class ErrorConditionEnum> error_condition(ErrorConditionEnum e) noexcept; // 수정자 void assign(int val, const error_category& cat) noexcept; template<class ErrorConditionEnum> error_condition& operator=(ErrorConditionEnum e) noexcept; void clear() noexcept; // 관찰자 int value() const noexcept; const error_category& category() const noexcept; string message() const; explicit operator bool() const noexcept; private: int val_; // 설명 전용 const error_category* cat_; // 설명 전용 }; }
클래스 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, const char* 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, const char* what_arg); system_error(int ev, const error_category& ecat); const error_code& code() const noexcept; const char* what() const noexcept override; }; }