http://msdn.microsoft.com/zh-cn/library/s58ftw19%28v=vs.80%29.aspx
主要是查到的这篇msdn上的文档
之前项目上遇到点问题,需要对于内存访问相关的异常进行捕获,由于标准库的try catch无法满足要求(毕竟是C++标准库,对于系统底层级别的错误可能无法捕获)
然后就查到了MSDN上的
SEH中异常捕获也较为简单,一般如下使用就行:
int filter(unsigned int code, struct _EXCEPTION_POINTERS *ep) {
//puts("in filter.");
if (code == EXCEPTION_ACCESS_VIOLATION) {
puts("caught AV as expected.");
return EXCEPTION_EXECUTE_HANDLER;
}
else {
//puts("didn't catch AV, unexpected.");
return EXCEPTION_CONTINUE_SEARCH;
};
}
int main()
{
char* a = new char[1];
__try
{
strcpy(a+99999, "lalalalalala");
}
__except(filter(GetExceptionCode(), GetExceptionInformation()))
{
int c = 0;
c++;
}
return 0;
}
filter函数直接copy的msdn上的,__except内的参数也可以是自己的任意表达式,测试函数自己整了一个
记录下来,以供日后参考