# std::errc

< cpp‎ | error

定义于头文件 `<system_error>` |  |
enum class errc; |  | (C++11 起)

有作用域枚举 `std::errc` 定义对应 POSIX 错误码的可移植错误条件。

### 成员常量

常量 | 等价的 POSIX 错误
`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

### 非成员函数

make_error_code(std::errc) (C++11) | 构造 std::errc 错误码 (函数)
make_error_condition(std::errc) (C++11) | 构造 std::errc 错误条件 (函数)

### 帮助类

is_error_condition_enum<std::errc> (C++11) | 扩充 std::is_error_condition_enum 类型特性以鉴别 std::errc 值为 error_condition (函数模板)

### 示例

    #include <iostream>
    #include <system_error>
    #include <thread>
    int main()
    {
        try {
            std::thread().detach(); // 脱附一个非线程
        } catch (const std::system_error& e) {
            std::cout << "Caught a system_error\n";
            if(e.code() == std::errc::invalid_argument)
                std::cout << "The error condition is std::errc::invalid_argument\n";
            std::cout << "the error description is " << e.what() << '\n';
        }
    }

输出：

    Caught a system_error
    The error condition is std::errc::invalid_argument
    the error description is Invalid argument

### 参阅

error_code (C++11) | 保有依赖于平台的错误码 (类)
error_condition (C++11) | 保有可移植的错误码 (类)