如何在现代C++中使用异常?

Dav*_*vid 5 c++ exception-handling c++11

目前我们只抛出由外部源(例如数据)导致的不可恢复的故障,并且在整个执行过程中只有一次尝试捕获.

何时/为什么/如何在现代C++中使用异常?

C++ 11是否改变了上述问题的答案?

Mat*_*att 2

关于问题的第一部分(最佳实践),标准参考是 Herb Sutter 的“Exceptional C++:47 个工程难题、编程问题和解决方案”中的“异常安全问题和技术”部分。

解决 C++11 部分——以下参考文献可能会有所帮助:

添加了新的特定于例外的功能:

http://www2.research.att.com/~bs/C++0xFAQ.html#rethrow

http://www2.research.att.com/~bs/C++0xFAQ.html#noexcept

即使看似不相关的功能,实际上就其应用程序而言也非常相关:“unique_ptr 的用途包括为动态分配的内存提供异常安全性 [...]” http://www2.research.att.com/~bs /C++0xFAQ.html#std-unique_ptr

异常规范已被弃用: http://herbsutter.com/2010/03/13/trip-report-march-2010-iso-c-standards-meeting/