【发布时间】:2013-01-13 09:56:25
【问题描述】:
我在网上搜索了很多关于这个主题的文章。但是,我发现没有完整的清单来验证我们的代码的异常安全质量。
所以,我想向您收集宝贵的 C++ 异常处理最佳实践。
我先列出一些我自己的做法:
-
在析构函数中捕获所有异常:
struct A { ~A() { try { // Here may throw exceptions } catch (std::runtime_error& e) {} catch (...) { logging("..."); } } }; 在异常信息中添加函数名、源文件名和行号。
__func__、__FILE__和__LINE__是好朋友。永远不要使用异常规范。原因在《C++编码标准》一书中给出。
你的是什么?
【问题讨论】:
-
其实
__func__是个好朋友。我们都回避__FUNCTION__,因为它不在标准中。 -
通过 const 引用按值捕获。
-
@AlokSave,为什么是 const?非常量引用捕获更好!
-
@hate-engine:是什么让你得出这个结论?
-
Non-const 意味着可能的复制意味着可能的 std::bad_alloc 意味着 std::terminate.. const ftw
标签: c++ exception logging exception-handling coding-style