程序员有太多的学习点,接触不到就是一个盲点,今天看到c++在window下的崩溃处理。从此可以在程序崩溃时启动自己的处理程序,或者友好的告诉用户了。
#include "stdafx.h"
#include <stdio.h>
#include <windows.h> // for EXCEPTION_ACCESS_VIOLATION
#include <excpt.h>
int filter(unsigned int code, struct _EXCEPTION_POINTERS *ep)
{
printf("在异常表达式中\n");
if (code == EXCEPTION_ACCESS_VIOLATION)
{
printf("接受处理访问违例异常\n");
return EXCEPTION_EXECUTE_HANDLER;
}
else {
printf("其他异常都不处理\n");
return EXCEPTION_CONTINUE_SEARCH;
};
}
int _tmain(int argc, _TCHAR* argv[])
{
int* p = 0x00000000; // pointer to NULL
printf("开始主程序\n");
__try{
printf("进入外层的try\n");
__try{
printf("进入内层的try");
int *p=0; // 空指针
*p = 13; // 导致访问冲突异常
}__finally{
printf("在finally内部。");
printf(AbnormalTermination() ? "正常终止\n" : "非正常终止\n");
}
}__except(filter(GetExceptionCode(), GetExceptionInformation())){
printf("在except内部\n");
}
printf("主函数结束\n");
}
原文地址:https://zh.wikipedia.org/wiki/%E7%BB%93%E6%9E%84%E5%8C%96%E5%BC%82%E5%B8%B8%E5%A4%84%E7%90%86