RaiseException(0xE0000001, 0, 0, 0);

本文详细介绍了使用SEH(Structured Exception Handling)处理各种类型的异常情况的方法,包括内存访问违规、数据类型对齐错误等,并通过示例展示了如何在C++程序中实现异常捕获与处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <stdio.h>
#include <windows.h>
#include <excpt.h>
 
int seh_filer(int code)
{
switch(code)
{
	case EXCEPTION_ACCESS_VIOLATION :
		printf("存储保护异常,错误代码:%x\n", code);
	break;
	case EXCEPTION_DATATYPE_MISALIGNMENT :
		printf("数据类型未对齐异常,错误代码:%x\n", code);
	break;
	case EXCEPTION_BREAKPOINT :
		printf("中断异常,错误代码:%x\n", code);
	break;
	case EXCEPTION_SINGLE_STEP :
		printf("单步中断异常,错误代码:%x\n", code);
	break;
	case EXCEPTION_ARRAY_BOUNDS_EXCEEDED :
		printf("数组越界异常,错误代码:%x\n", code);
	break;
	case EXCEPTION_FLT_DENORMAL_OPERAND :
	case EXCEPTION_FLT_DIVIDE_BY_ZERO :
	case EXCEPTION_FLT_INEXACT_RESULT :
	case EXCEPTION_FLT_INVALID_OPERATION :
	case EXCEPTION_FLT_OVERFLOW :
	case EXCEPTION_FLT_STACK_CHECK :
	case EXCEPTION_FLT_UNDERFLOW :
		printf("浮点数计算异常,错误代码:%x\n", code);
	break;
	case EXCEPTION_INT_DIVIDE_BY_ZERO :
		printf("被0除异常,错误代码:%x\n", code);
	break;
	case EXCEPTION_INT_OVERFLOW :
		printf("数据溢出异常,错误代码:%x\n", code);
	break;
	case EXCEPTION_IN_PAGE_ERROR :
		printf("页错误异常,错误代码:%x\n", code);
	break;
	case EXCEPTION_ILLEGAL_INSTRUCTION :
		printf("非法指令异常,错误代码:%x\n", code);
	break;
	case EXCEPTION_STACK_OVERFLOW :
		printf("堆栈溢出异常,错误代码:%x\n", code);
	break;
	case EXCEPTION_INVALID_HANDLE :
		printf("无效句病异常,错误代码:%x\n", code);
	break;
	default :
	if(code & (1<<29))
		printf("用户自定义的软件异常,错误代码:%x\n", code);
	else
		printf("其它异常,错误代码:%x\n", code);
	break;
}
return 1;
}
 
void main()
{
puts("hello");
	__try
	{
		puts("try块中");
 
		// 注意,主动抛出一个软异常
		RaiseException(0xE0000001, 0, 0, 0);

	}
	__except(seh_filer(GetExceptionCode()))
	{
		puts("except块中");
	}
	__try
	{
		puts("try块中");
 
		// 注意,主动抛出一个软异常
		//RaiseException(0xE0000001, 0, 0, 0);
		int a=0;
		a=3/a;
	}
	__except(seh_filer(GetExceptionCode()))
	{
		puts("except块中");
	}
 
puts("world");
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值