相关疑难解决方法(0)

在析构函数中捕获异常

是否有可能使析构函数捕获异常然后重新抛出它们?
如果是这样,我将如何做到这一点,因为try声明没有明确的地方?

基本上,我想理想地做:

CMyObject::~CMyObject()  
{
    catch(...)    // Catch without a try.  Possible?
    {
        LogSomeInfo();
        throw;  // re-throw the same exception
    }
    // Normal Destructor operations
}
Run Code Online (Sandbox Code Playgroud)

背景
我有一个庞大的,复杂的应用程序,在某处抛出未处理的异常.我没有轻松访问main或顶级消息泵或任何类似的东西,所以没有容易捕获所有未处理的异常的地方.

我认为任何未处理的异常必须通过一堆析构函数,因为堆栈是解开的.所以,我正在考虑catch在析构函数中散布一堆语句.然后,至少我会知道抛出异常时正在播放的对象.但我不知道这是否可行,或者是否可取.

c++ destructor exception

26
推荐指数
3
解决办法
1511
查看次数

标签 统计

c++ ×1

destructor ×1

exception ×1