Класс bad_optional_access
Класс bad_optional_access наследуется от
std::exception и
используется для сигнализации об ошибке при попытке
получить доступ к значению объекта
std::optional, который не содержит значения.
Данное исключение выбрасывается методами
value и оператором разыменования
operator*, когда объект находится в пустом
состоянии. Класс не имеет собственных параметров
и методов, кроме унаследованного от базового
класса метода what,
который возвращает пояснительную строку.
Синтаксис
#include <optional>
class bad_optional_access : public exception
Пример
Давайте создадим пустой объект std::optional
и попробуем получить доступ к его значению с
помощью метода value, чтобы вызвать
исключение:
#include <iostream>
#include <optional>
using namespace std;
int main()
{
optional<int> opt;
try
{
cout << opt.value() << endl;
}
catch (const bad_optional_access& e)
{
cout << "Caught: " << e.what() << endl;
}
return 0;
}
Результат выполнения кода:
"Caught: bad optional access"
Пример
Давайте проверим, что объект содержит значение, перед обращением к нему, чтобы избежать исключения:
#include <iostream>
#include <optional>
using namespace std;
int main()
{
optional<int> opt = 12345;
if (opt.has_value())
{
cout << opt.value() << endl;
}
else
{
cout << "No value" << endl;
}
return 0;
}
Результат выполнения кода:
12345