std::errc

来自cppreference.com
< cpp‎ | error
 
 
工具库
通用工具
日期和时间
函数对象
格式化库 (C++20)
(C++11)
关系运算符 (C++20 中弃用)
整数比较函数
(C++20)(C++20)(C++20)
(C++20)
swap 与类型运算
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
常用词汇类型
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
初等字符串转换
(C++17)
(C++17)
 
 
std::errc
 
在标头 <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

非成员函数

构造 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_availableno_stream_resources
not_a_streamstream_timeout 涉及了废弃的 POSIX STREAMS API[1]
弃用这些成员常量
  1. 尽管对应的 POSIX 错误码 ENODATA、ENOSR、ENOSTR 和 ETIME 在 POSIX 2017 才被标为“即将废弃”,但以前的 POSIX 标准也不要求必须实现 STREAMS API(因为流行的类 Unix 系统拒绝实现它)。

参阅

保有依赖于平台的错误码
(类)
保有可移植的错误码
(类)