【发布时间】:2016-07-09 11:29:06
【问题描述】:
我想知道是否(以及如何)可以捕获成员析构函数中抛出的异常。示例:
#include <exception>
class A
{
public:
~A() {
throw std::exception("I give up!");
}
};
class B
{
A _a;
public:
~B() {
// How to catch exceptions from member destructors?
}
};
【问题讨论】:
-
析构函数应该以不会失败的方式编写。如果他们可以,这是糟糕设计的标志。 How to handle a destructor failure
-
@J3soon 我知道这条规则。我在问 C++ 语法以及如何做到这一点。
-
赶上哪里?在析构函数中还是在封闭范围内?
-
如果你想抛出异常,你需要让你的析构函数
noexcept(false)。
标签: c++ destructor function-try-block