14

我在网上搜索了很多关于这个主题的文章。但是,我发现没有完整的清单来验证我们的代码的异常安全质量。

因此,我想从您那里收集有价值的 C++ 异常处理最佳实践。

我先列出一些我自己的做法:

  1. 如果在析构函数中有任何异常,则捕获所有异常:

    struct A
    {
        ~A()
        {
            try
            {
                // Here may throw exceptions
            }
            catch (std::runtime_error& e)
            {}
            catch (...)
            {
                logging("...");
            }
        }
    };
    
  2. 在异常信息中添加函数名、源文件名和行号。__func____FILE__并且__LINE__是好朋友。

  3. 永远不要使用异常规范。原因在《C++ 编码标准》一书中给出。

你的是什么?

4

1 回答 1

18

我知道这可能更适合作为评论而不是作为答案,但由于我链接的资源回答了你所有的问题等等,我认为也可以将它作为答案发布,只是为了给它更多可见性和/或相关性。

而且由于我不可能把它总结得比原来的更好,我什至不会尝试做一个简短的总结,因为我会冒着扭曲它或给出有偏见的概述的风险。

只需观看Jon Kalb 关于异常安全编码的两部分演讲。就是这样。

于 2013-01-29T18:24:03.217 回答