std::bad_exception
来自cppreference.com
定义于头文件 <exception>
|
||
class bad_exception; |
||
std::bad_exception
是 C++ 运行时在下列情况抛出的异常类型:
1) 若 std::exception_ptr 存储被捕捉异常的副本,且被 std::current_exception 捕捉的异常对象的复制构造函数抛出异常,则被捕捉的异常是
std::bad_exception
的一个实例。
2) 若动态异常规定被违背且 std::unexpected 抛出或重抛仍然违背异常规定的异常,但异常规定允许 std::bad_exception ,则抛出 std::bad_exception 。
|
(C++17 前) |
继承图
成员函数
构造 bad_exception 对象 (公开成员函数) | |
复制该对象 (公开成员函数) | |
[虚] |
返回解释性字符串 (虚公开成员函数) |
继承自 std::exception
成员函数
[虚] |
析构该异常对象 ( std::exception 的虚公开成员函数) |
[虚] |
返回解释性字符串 ( std::exception 的虚公开成员函数) |
示例
运行此代码
#include <iostream> #include <exception> #include <stdexcept> void my_unexp() { throw; } void test() throw(std::bad_exception) { throw std::runtime_error("test"); } int main() { std::set_unexpected(my_unexp); try { test(); } catch(const std::bad_exception& e) { std::cerr << "Caught " << e.what() << '\n'; } }
输出:
Caught std::bad_exception