这里强调了是VC++中的异常捕获;
通常在C++中的异常捕获是:
void Func1()
{
int* p = 0x00000000; // pointer to NULL
*p = 10;
}
try
{
Func1();
}
catch (...)
{
MessageBox(L"in finally");
throw;
}
如果在VC++用这个方法,那么程序会崩溃,而且不会进入catch中,这与我们想要的结果不一致;
在VC++ 中一般捕获的方法是:
这与的话就可以捕获一些指针错误了;
{
__try
{
__try
{
Func1();
}
__finally
{
MessageBox(L"in finally");
}
}
__except(puts("in filter"), 1)
{
MessageBox(L"in except");
}
}