Класс system_error
Класс system_error является исключением,
которое наследуется от runtime_error и
предназначено для представления ошибок, связанных
с операционной системой или низкоуровневыми
библиотеками. Это исключение хранит внутри себя
объект error_code, который содержит
числовой код ошибки и категорию, к которой эта
ошибка относится. В конструктор можно передать
готовый error_code, либо код ошибки и
категорию, а также дополнительное строковое
сообщение.
Синтаксис
class system_error : public runtime_error;
system_error(const error_code& ec);
system_error(const error_code& ec, const string& what_arg);
system_error(int ev, const error_category& ecat);
system_error(int ev, const error_category& ecat, const string& what_arg);
Пример
Давайте создадим исключение system_error,
передав в него код ошибки и категорию, а затем
перехватим его и выведем описание:
#include <iostream>
#include <system_error>
using namespace std;
int main()
{
try
{
throw system_error(2, generic_category(), "file not found");
}
catch (const system_error& e)
{
cout << e.what() << endl;
cout << e.code().value() << endl;
}
return 0;
}
Результат выполнения кода:
"file not found: No such file or directory"
2
Пример
Давайте создадим исключение system_error
с помощью объекта error_code и выведем
его сообщение через метод message:
#include <iostream>
#include <system_error>
using namespace std;
int main()
{
error_code ec = make_error_code(errc::permission_denied);
try
{
throw system_error(ec);
}
catch (const system_error& e)
{
cout << e.code().message() << endl;
}
return 0;
}
Результат выполнения кода:
"Permission denied"
Смотрите также
-
класс
error_code,
который хранит код ошибки -
класс
runtime_error,
который является базовым для system_error -
функция
make_error_code,
которая создает объект error_code -
метод
message,
который возвращает описание ошибки