【发布时间】:2010-11-14 08:00:37
【问题描述】:
在 C++ (MSVC) 中,我如何测试异常当前是否“正在运行”。即,作为类析构函数的一部分被调用的代码可能会被调用,因为异常正在展开堆栈。. 我如何检测这种情况,而不是由于正常返回而调用析构函数的正常情况?
【问题讨论】:
-
我觉得我应该捍卫我想要这样做的理由。当我的一段代码崩溃时,我想写出一些调试状态。为此,我想将一些日志记录代码放入析构函数中,该析构函数将写出一些内部状态。我不希望在每个析构函数调用中都这样,因为在我的测试设置中它会在失败之前正常运行几次迭代。所以.. 在我的析构函数中,我现在使用“if (uncaught_exception()) {..}”来启用一些额外的日志记录。调试器对我来说还不够,因为我需要进行大量昂贵的转换才能使内部状态可读。
标签: c++ exception visual-c++