C++ Boost异常处理

C++ Boost异常处理,c++,debugging,boost,exception-handling,C++,Debugging,Boost,Exception Handling,我正在考虑在我的应用程序中使用boost异常处理。采用boost异常处理的主要好处是我可以向异常添加元数据。这可以简化调试,并允许在异常堆栈展开时向上传播更多信息。但是,我不清楚这对性能的影响。boost异常处理是如何实现的?错误信息对象是否内部存储在映射中(每次插入时都插入log(n)!任何已知的boost异常处理的缺点 正如您所提到的,据我所知,伴随着以下负载 对于操作员 运算符[]用于在 std::map 我不能说这些负载在你的情况下是否重要。 如果你担心的话,最好在实际情况下测量负载

我正在考虑在我的应用程序中使用boost异常处理。采用boost异常处理的主要好处是我可以向异常添加元数据。这可以简化调试,并允许在异常堆栈展开时向上传播更多信息。但是,我不清楚这对性能的影响。boost异常处理是如何实现的?错误信息对象是否内部存储在映射中(每次插入时都插入log(n)!任何已知的boost异常处理的缺点

正如您所提到的,据我所知,伴随着以下负载 对于操作员

  • 运算符[]
    用于在
    std::map

  • 我不能说这些负载在你的情况下是否重要。 如果你担心的话,最好在实际情况下测量负载
    环境。

    是的,错误信息存储在地图中。插入错误信息的成本在速度(抛出和堆栈展开可能慢得多)和空间(在捕获结束时回收所有内存,通常在堆栈展开时释放所有其他内存之后不久)方面都可以忽略不计

    我想,对于可能进行的元数据,任何映射插入或其他处理都会比实际抛出C++异常的开销更苍白。异常应该是异常的(抱歉重言式)。只有在没有异常发生的情况下,才应考虑异常处理开销。处理抛出异常的开销应该是无关的。如果不是这样,那就是设计错误的迹象。@atzz:这是相关的,如果我抛出一个异常,我会告诉你今天要捕获什么,而不是明天。@ybungalobill-我们不要为了争论而争论。如果您不同意我的意见,请以一种允许进行建设性讨论的形式重新表述您的意见。@ybungalobill-我假设软件工程师是理智的人,不会故意添加悲观情绪。有了这些,记住没有什么是免费的。优化通常在开发和维护方面花费很多。我认为异常处理不是关注性能的地方;最好保持简洁易读。异常很少发生,所以您在总体性能上不会获得任何好处。OTOH,异常处理代码在产品开发和维护期间非常频繁地成为关注的焦点,所以可读性在这里是值得的。