#include "stdafx.h"
#include <Windows.h>
#include <iostream>
DWORD Filter(DWORD ExCode)
{
switch (ExCode)
{
case EXCEPTION_INT_DIVIDE_BY_ZERO:
std::cout<<"Zero Divded!";
return EXCEPTION_EXECUTE_HANDLER;
case EXCEPTION_ACCESS_VIOLATION:
std::cout<<"Memory access denied!";
return EXCEPTION_EXECUTE_HANDLER;//交由异常处理器处理
//return EXCEPTION_CONTINUE_EXECUTION;//继续执行:此处会无限输出access denied,因为该异常无法跳过
//return EXCEPTION_CONTINUE_SEARCH;//交由外层调用函数处理
default:
return EXCEPTION_CONTINUE_EXECUTION;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
_try
{
int j=1;
// int i=j/0;
int *p;
p=(int *)0x00000001;
std::cout<<(*p);
std::cout<<"Continue executing in try block";
}
_except(Filter(GetExceptionCode()))//获取异常代码值
{
std::cout<<"/nIn Exception handler/n";
}
std::cout<<"Continue executing in main ";
return 0;
}
Windows编程之异常处理
最新推荐文章于 2024-09-06 22:48:50 发布