Wil*_*mKF 20 c++ destructor exception raii
在C++中,在析构函数中检测它是否正在由于抛出异常而在堆栈展开期间运行而不是正常退出触发析构函数的范围有什么好方法?我想知道,以便我可以创建一个具有一些清理代码的类,该代码始终在正常退出时运行,但在发生异常时跳过.
小智 22
std::uncaught_exception()(定义中<exception>)将在析构函数中告诉您是否因为异常而调用它:
class A
{
public:
~A()
{
if (std::uncaught_exception()) {
// Called because of an exception
} else {
// No exception
}
}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1628 次 |
| 最近记录: |