std::errc
来自cppreference.com
在标头 <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 |
非成员函数
(C++11) |
构造 std::errc 错误码 (函数) |
构造 std::errc 错误条件 (函数) |
帮助类
扩充 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 << "捕获了 system_error\n"; if(e.code() == std::errc::invalid_argument) std::cout << "错误条件是 std::errc::invalid_argument\n"; std::cout << "错误描述是 " << e.what() << '\n'; } }
输出:
"捕获了 system_error 错误条件是 std::errc::invalid_argument 错误描述是 Invalid argument
缺陷报告
下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。
缺陷报告 | 应用于 | 出版时的行为 | 正确行为 |
---|---|---|---|
LWG 3869 | C++11 | 成员常量 no_message_available 、no_stream_resources 、not_a_stream 和 stream_timeout 涉及了废弃的 POSIX STREAMS API[1]
|
弃用这些成员常量 |
- ↑ 尽管对应的 POSIX 错误码 ENODATA、ENOSR、ENOSTR 和 ETIME 在 POSIX 2017 才被标为“即将废弃”,但以前的 POSIX 标准也不要求必须实现 STREAMS API(因为流行的类 Unix 系统拒绝实现它)。
参阅
(C++11) |
保有依赖于平台的错误码 (类) |
(C++11) |
保有可移植的错误码 (类) |