Класс bad_any_cast
Класс bad_any_cast представляет собой
исключение, которое выбрасывается при неудачной
попытке извлечь значение из объекта any
с помощью функции any_cast. Это исключение
наследуется от класса std::bad_cast, который,
в свою очередь, наследуется от std::exception.
Класс не имеет собственных параметров и методов,
кроме унаследованного метода what, который
возвращает строку с описанием ошибки.
Синтаксис
#include <any>
class bad_any_cast : public std::bad_cast;
Пример
Давайте попробуем извлечь из объекта any
значение типа int, хотя внутри хранится
строка. Это приведет к выбросу исключения
bad_any_cast:
#include <iostream>
#include <any>
#include <string>
using namespace std;
int main()
{
any value = string("abcde");
try
{
int res = any_cast<int>(value);
cout << res << endl;
}
catch (const bad_any_cast& e)
{
cout << "Error: " << e.what() << endl;
}
return 0;
}
Результат выполнения кода:
"Error: bad any_cast"
Пример
Давайте выполним корректное извлечение значения
из объекта any. В этом случае исключение
не будет выброшено:
#include <iostream>
#include <any>
using namespace std;
int main()
{
any value = 12345;
try
{
int res = any_cast<int>(value);
cout << res << endl;
}
catch (const bad_any_cast& e)
{
cout << "Error: " << e.what() << endl;
}
return 0;
}
Результат выполнения кода:
12345