C++异常处理的最佳实践是什么?

What are your best practices for C++ exception handling?

本文关键字:是什么 最佳 异常处理 C++      更新时间:2023-10-16

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

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

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

  1. 捕获析构函数中的所有异常(如果有):

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

  3. 切勿使用异常规范。原因在"C++编码标准"一书中给出。

你的是什么?

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

由于我不可能比原版更好地总结这一切,我甚至不会尝试做一个简短的总结,因为我冒着歪曲它或给出有偏见的概述的风险。

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

相关文章: