我搜索了互联网,发现了很多关于这个主题的文章。但是,我发现没有完整的核对清单来验证我们的代码的异常安全质量。
因此,我希望从您那里收集有价值的C ++异常处理最佳实践。
我首先列出了我自己的一些做法:
在析构函数中捕获所有异常:
struct A
{
~A()
{
try
{
// Here may throw exceptions
}
catch (std::runtime_error& e)
{}
catch (...)
{
logging("...");
}
}
};
在异常信息中添加函数名,源文件名和行数。 __func__
,__FILE__
和__LINE__
是好朋友。
绝不使用例外规格。原因在“C ++编码标准”一书中给出。
你的是什么?
答案 0 :(得分:16)
我知道这可能更适合作为评论而不是作为答案,但由于我正在链接的资源回答所有你的问题和更多,我认为它也可以将其作为答案发布,只是为了给它更多的可见性和/或相关性。
由于我不可能比原来更好地总结,我甚至不会尝试做一个简短的总结,因为我会冒险扭曲它或给出一个有偏见的概述。
只需观看 two-part talk on exception-safe coding by Jon Kalb 即可。就是这样。