std::uncaught_exceptions
是 C++17 引入的关键异常处理工具,用于精确统计当前线程未捕获异常的数量。
一、核心概念与演进背景
1. C++11 的局限:std::uncaught_exception()
- 功能:仅返回
bool
,表示是否存在未捕获异常,无法区分数量 。 - 问题:
若析构函数中抛出异常且已有未捕获异常,程序直接终止(std::terminate()
)。
无法处理嵌套异常场景(如多个异常同时传播)。
2. C++17 的改进:std::uncaught_exceptions()