我们在我们的第 4 个也是最后一个 C++ 课程中,我一直在查看 Herb Sutter 关于异常规范的帖子和一些关于 stackoverflow 的帖子,表明异常规范将在下一个 C++ 版本中被弃用。
我可以找到如何实现异常规范的示例,但是在理解异常规范是什么以及它们与异常处理有何不同时,我遇到了一些问题。
在提供一些见解方面的任何帮助都将是最有帮助的。
异常规范要求编译器通过调用std::unexpected()
或替换集来处理所有未列出的异常类型std::set_unexpected()
。
它们被普遍认为是一件坏事。
常见的误解:
另请参阅std::bad_exception
。
异常规范指定函数可能抛出的异常。
Exceptions specifications, as the name imply, are about specifying which exceptions a function may throw; in general. How the may is enforced however depends on the language.
std::unexpected
In general, exceptions specifications are pretty much universally decried because:
std::bad_alloc
; pretty much every single STL collection is thus susceptible for example.If possible, forget you ever learned about exception specifications.