我在互联网上搜索了很多关于这个主题的文章。然而,我发现没有一份完整的清单来验证我们代码的异常安全性。
因此,我希望从您那里收集有价值的C++异常处理最佳实践。
我先列出了自己的一些做法:
如果析构函数中有任何异常,请捕获所有异常:
struct A { ~A() { try { // Here may throw exceptions } catch (std::runtime_error& e) {} catch (...) { logging("..."); } } };
在异常信息中添加函数名、源文件名和行号。
__func__
、__FILE__
和__LINE__
是好朋友。永远不要使用异常规格说明(exception specifications)。原因在书籍《C++ Coding Standards》中有所阐述。
你的问题是什么?
__func__
是一个好朋友。我们都回避__FUNCTION__
,因为它不在标准中。 - chris