Класс exception
Класс exception - это базовый класс, от которого наследуются все стандартные классы исключений в C++. Он определён в заголовочном файле <exception>. Класс не принимает параметров при создании и предоставляет виртуальный метод what, который возвращает строку с описанием ошибки. Этот метод можно переопределять в производных классах, чтобы возвращать собственное сообщение об ошибке.
Синтаксис
#include <exception>
class exception;
// Получение сообщения об ошибке
const char* what() const noexcept;
Пример
Давайте создадим объект класса exception и вызовем его метод what:
#include <iostream>
#include <exception>
using namespace std;
int main()
{
exception e;
cout << e.what() << endl;
return 0;
}
Результат выполнения кода:
"std::exception"
Пример
Давайте создадим собственный класс исключения, унаследованный от exception, и переопределим метод what:
#include <iostream>
#include <exception>
using namespace std;
class MyException : public exception
{
public:
const char* what() const noexcept override
{
return "My custom error";
}
};
int main()
{
try
{
throw MyException();
}
catch (const exception& e)
{
cout << e.what() << endl;
}
return 0;
}
Результат выполнения кода:
"My custom error"
Пример
Давайте перехватим стандартное исключение через базовый класс exception:
#include <iostream>
#include <exception>
#include <stdexcept>
using namespace std;
int main()
{
try
{
throw out_of_range("Index is out of range");
}
catch (const exception& e)
{
cout << e.what() << endl;
}
return 0;
}
Результат выполнения кода:
"Index is out of range"