SEH的全称是Structured Exception Handling,是Windows操作系统提供的一种异常处理方式。SEH是属于操作系统的特性,不为特定语言设计,从它的名字就能看出它是一种结构化的异常处理方式。SEH包括了2个部分:终止处理__try/__finally和异常处理__try/__except,下面分别进行介绍。
终止处理__try/__finally
__try/__finally可以保证无论try块内的代码执行结果如何,finally块内的代码总会被调用和执行。现在用下面的这个VC++中的控制台程序来说明。
int _tmain(int argc, _TCHAR* argv[])
{
__try
{
MessageBox(NULL, _T("Message from '__try' section"), _T("Test"), MB_OK);
// 除零,人为的使程序崩溃
//
int i = 13;
int j = 0;
int m = i / j;
}
__finally
{
// 在这里添加处理程序崩溃情况的代码
//
// 这里以弹出一个对话框为例子
//
MessageBox(NULL, _T("Message from '__finally' section"), _T("Test"), MB_OK);
}
MessageBox(NULL, _T("Funcation completed"), _T("Test"), MB_OK);
return 0;
}
编译上面的代码。运行生成的EXE,会弹出下面的对话