除了分别在运行时和编译时检查之外,throw()
和noexcept
之间有什么不同吗?
This Wikipedia C++11 article建议弃用C++03抛出说明符。
为什么呢?noexcept
是否有足够的能力在编译时覆盖所有这些内容呢?
[注意:我检查了this question和this article,但无法确定弃用的确切原因。]
发布于 2017-07-11 01:08:13
当违反动态异常规范时,C++运行时将调用std::unexpected()
:异常规范禁止此类异常的函数抛出异常。
也可以直接从程序中调用std::unexpected()
。
在这两种情况下,std::unexpected
都会调用当前安装的std::unexpected_handler
。默认std::unexpected_handler
调用std::terminate
。
https://stackoverflow.com/questions/12833241
复制相似问题