是否可以让析构函数捕获异常然后重新抛出它们?
如果是这样,我该怎么做,因为没有明确的try
声明位置?
基本上,我想理想地做:
CMyObject::~CMyObject()
{
catch(...) // Catch without a try. Possible?
{
LogSomeInfo();
throw; // re-throw the same exception
}
// Normal Destructor operations
}
背景
我有一个大型、复杂的应用程序,它在某处抛出未处理的异常。我无法轻松访问main
顶级消息泵或类似的东西,因此没有容易的地方来捕获所有未处理的异常。
我认为任何未处理的异常都必须通过一堆析构函数,因为堆栈是展开的。所以,我正在考虑在析构函数中分散一堆catch
语句。然后至少我会知道抛出异常时有哪些对象在起作用。但我不知道这是否可行或可取。