【问题标题】:What happens when i throw an exception in c++ destructor? [duplicate]当我在 c++ 析构函数中抛出异常时会发生什么? [复制]
【发布时间】:2011-03-25 14:36:42
【问题描述】:

可能重复:
throwing exceptions out of a destructor

在 C++ 中,我们永远不应该在析构函数中抛出异常。此代码是否按预期工作?

struct a 
{ 
    ~a( ) { } 
};
struct b : public a 
{
    ~b( ) 
    { 
        throw 1; 
    }; 
};
bool c( ) 
{ 
    a* d=new b; 
    try 
    { 
        delete d; 
    } 
    catch( int e ) 
    { 
        return e; 
    }
    return false; 
}

【问题讨论】:

  • 试着把代码格式化好一点,很难阅读
  • 我没有看到任何意图的迹象。谁知道它是否应该工作。

标签: c++


【解决方案1】:

此代码是否按预期工作?

您是否尝试过自己运行它?另请查看this FAQ - 据此,是的,它适用于您的简单情况,但一般来说,您不应该这样做。同样,这取决于您如何定义“按预期工作” - 程序将无错误地运行,但您可能会因为对象未被释放而泄漏内存。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-29
    • 2011-10-13
    • 1970-01-01
    • 2014-08-12
    • 2011-05-07
    • 2010-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多