MFC使用的异常捕获方式是捕获异常的指针。
这样做的好处有两点
1 可以使用面向对象的多态特性
2 不存在临时对象产生,提高性能。
但是这样做有一个问题就是关于抛出的这个对象的指针由谁来释放?
最安全的最法是
在捕捉到异常的指针后,在使用后将其delete,并赋值为NULL。
比如:
//...
catch(CException* e)
{
// using e, and does not throw it again.
delete e;
e = NULL;
}
尽管MFC的TRY, CATCH宏有统一的方式记录抛出的异常指针。
但我们通常使用C++的异常处理方式,如不delete可能会引发内存泄漏。