std::system_error::system_error

来自cppreference.com
< cpp‎ | error‎ | system 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++17)
(C++17)
栈踪
 
 
 
system_error( std::error_code ec );
(1) (C++11 起)
system_error( std::error_code ec, const std::string& what_arg );
(2) (C++11 起)
system_error( std::error_code ec, const char* what_arg );
(2) (C++11 起)
system_error( int ev, const std::error_category& ecat );
(3) (C++11 起)
system_error( int ev, const std::error_category& ecat,
              const std::string& what_arg );
(4) (C++11 起)
system_error( int ev, const std::error_category& ecat,
              const char* what_arg );
(4) (C++11 起)
system_error( const system_error& other ) noexcept;
(5) (C++11 起)

构造新的 system_error 对象。

1) 以 error_code ec 构造
2) 以 error_code ec 和解释字符串 what_arg 构造。 what() 返回的字符串保证含有 what_arg
3) 以底层错误码 ev 和关联的 error_category ecat 构造。
4) 以底层错误码 ev 、关联的 error_category ecat 和解释字符串 what_arg 构造。 what() 返回的字符串保证含有 what_arg (假定它不含内嵌的空字符 )。
5) 复制构造函数。以 other 的内容初始化内容。若 *thisother 均拥有动态类型 std::system_errorstd::strcmp(what(), other.what()) == 0

参数

ec - 错误码
ev - 基础编码的错误码
ecat - 错误类别
what_arg - 解释性字符串

示例

演示如何从 errno 值创建 system_error 异常

#include <iostream>
#include <system_error>
 
int main()
{
    try
    {
        throw std::system_error(EDOM, std::generic_category());
    }
    catch (const std::system_error& error)
    {
        std::cout << "Error: " << error.code()
                  << " - " << error.code().message() << '\n';
    }
}

可能的输出:

Error: generic:33 - Numerical argument out of domain