我在网上搜索了很多关于这个主题的文章。但是,我发现没有完整的清单来验证我们的代码的异常安全质量。
因此,我想从您那里收集有价值的 C++ 异常处理最佳实践。
我先列出一些我自己的做法:
如果在析构函数中有任何异常,则捕获所有异常:
struct A { ~A() { try { // Here may throw exceptions } catch (std::runtime_error& e) {} catch (...) { logging("..."); } } };
在异常信息中添加函数名、源文件名和行号。
__func__
,__FILE__
并且__LINE__
是好朋友。永远不要使用异常规范。原因在《C++ 编码标准》一书中给出。
你的是什么?