您对C ++异常处理的最佳做法是什么?

时间:2013-01-29 18:16:24

标签: c++ exception logging exception-handling coding-style

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

因此,我希望从您那里收集有价值的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 个答案:

答案 0 :(得分:16)

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

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

只需观看 two-part talk on exception-safe coding by Jon Kalb 即可。就是这样。