std::iostream_category
Определено в заголовочном файле <ios> | ||
|---|---|---|
const std::error_category& iostream_category() noexcept; | (начиная с C++11) |
Получает ссылку на статический объект категории ошибок для ошибок iostream. Этот объект должен переопределять виртуальную функцию error_category::name(), возвращая указатель на строку "iostream". Он используется для идентификации кодов ошибок, передаваемых в исключениях типа std::ios_base::failure.
Параметры
(нет)
Возвращаемое значение
Ссылка на статический объект неуказанного типа времени выполнения, производный от std::error_category.
Пример
#include <fstream>
#include <iostream>
int main()
{
std::ifstream f("doesn't exist");
try
{
f.exceptions(f.failbit);
}
catch (const std::ios_base::failure& e)
{
std::cout << "Caught an ios_base::failure.\n"
<< "Error code: " << e.code().value()
<< " (" << e.code().message() << ")\n"
<< "Error category: " << e.code().category().name() << '\n';
}
}
Возможный вывод:
Caught an ios_base::failure. Error code: 1 (unspecified iostream_category error) Error category: iostream
Отчёты об ошибках
Следующие отчёты об ошибках, изменяющие поведение, были применены ретроспективно к ранее опубликованным стандартам C++.
| Отчёт об ошибке | Применяется к | Опубликованное поведение | Корректное поведение |
|---|---|---|---|
| LWG 2087 | C++11 |
iostream_category не была объявлена noexcept | объявлена как noexcept |
См. также
| исключение потока (открытый вложенный класс std::ios_base) |
|
|
(C++11) | коды ошибок потоков ввода-вывода (перечисление) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/io/iostream_category