windows 操作系统的SEH 异常处理

由于工作中出现服务器崩溃的情况,不得不采用一些比较好的异常处理机制:

 

 

char g_szBuff[100]; LONG OilFilter(char **ppchBuffer) { if(*ppchBuffer == NULL) { *ppchBuffer = g_szBuff; MessageBox(NULL,"there",NULL,MB_OK); return(EXCEPTION_CONTINUE_EXECUTION); } return(EXCEPTION_EXECUTE_HANDLER); } void main() { char *pBuff = NULL; int x = 0; __try { *pBuff = 'J'; x = 5/x; } __except(OilFilter(&pBuff)) { MessageBox(NULL,"here",NULL,MB_OK); } } 

 

由代码我们可以看到当对pBuff进行赋值时会出现异常,access violation

这种异常经常见到,通过调用异常时函数OilFilter我们可以对pBuff进行修改

然后返回EXCEPTION_CONTINUE_EXECUTION ,返回到赋值点,重新运行

看看情况,发现可以运行,继续走到x = 5/x,发现除0异常,继续走到OilFilter函数

返回EXCEPTION_EXECUTE_HANDLER,那么继续执行__except里面的内容。

这样代表着中间存在一种容错机制,同时不会让程序挂掉 。很简单吧 ~~~

 

你可能感兴趣的:(C/C++)