1. 在结构化异常处理中__try块和__except块是成对出现的,每一个__except块都必须有与之对应的__try块,不可能出现一个__try块下面有多于一个的__except块,如果这样就会出现编译错误,例如:
__try
{
*presult = d1 / d2;
}
__except(GetExceptionCode() == EXCEPTION_STACK_OVERFLOW ?
EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH)
{
_tprintf(TEXT("stack overflow."));
}
__except(GetExceptionCode() == EXCEPTION_INT_DIVIDE_BY_ZERO ?
EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH)
{
return FALSE;
}
试图编译以上代码,就会出现以下异常:
2.SEH中的__except子句括号中的表达式(也称为filter expression)在__try块发生异常时会被求值(evaluated,被计算)
以上论述表明了__except中的 fileter expression 的用法。
3.GetExceptionInformation和GetExceptionCode的使用
GetExceptionInformation:
GetExceptionCode: