C++17
中引入了int uncaught_exceptions() noexcept;
,取代了bool uncaught_exception() noexcept;
,这引发了一个问题:是否可能同时有多个异常?
根据en.cppreference.com的说法:
返回值
- 当前线程中未捕获的异常对象数量。
我试图想象一种可能会出现多个异常的情况。
经过深思熟虑,我只想到了一种方法:在同一个try
块内,在局部变量的destructor
中throw
某些东西。
然而这是不可行的。
首先,它违反了对destructor
的规定,强制它们必须是noexcept
。其次,可以通过noexcept(false)
来纠正,但它只会调用terminate
而不是进入catch
块。
所以它并没有起到作用。
最后,在catch
块内抛出任何东西都是很常见的,没有什么不寻常的。因为一旦进入catch
块,uncaught_exceptions()
会递减并变为零。
所以我怀疑是否可能出现这样的情况,即uncaught_exceptions()
返回多于1
?