std::iostream_category

来自cppreference.com
< cpp‎ | io
在标头 <ios> 定义
const std::error_category& iostream_category() noexcept;
(C++11 起)

获取为 iostream 错误而设的静态 error_category 对象的引用。要求对象覆写虚函数 error_category::name() 以返回指向字符串 "iostream" 的指针。它也用来鉴别由 std::ios_base::failure 类型异常提供的错误码。

参数

(无)

返回值

std::error_category 派生的未指定运行时类型的静态对象的引用。

示例

#include <fstream>
#include <iostream>
 
int main()
{
    std::ifstream f("不存在");
    try
    {
        f.exceptions(f.failbit);
    }
    catch (const std::ios_base::failure& e)
    {
        std::cout << "捕获了 ios_base::failure。\n"
                  << "错误码:" << e.code().value() 
                  << "(" << e.code().message() << ")\n"
                  << "错误类别:" << e.code().category().name() << '\n';
 
    }
}

可能的输出:

捕获了 ios_base::failure。
错误码:1(unspecified iostream_category error)
错误类别:iostream

缺陷报告

下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。

缺陷报告 应用于 出版时的行为 正确行为
LWG 2087 C++11 iostream_category 未声明为 noexcept 声明为 noexcept

参阅

流异常
(std::ios_base 的公开成员类)
(C++11)
输入/输出流的错误码
(枚举)