让程序在崩溃时体面的退出之SEH

本文详细介绍了Windows操作系统中的Structured Exception Handling(SEH),包括__try/__finally用于确保资源释放和异常终止处理,以及__try/__except用于捕获并控制异常流程,避免程序崩溃。通过示例代码展示了SEH如何处理异常并控制程序执行路径,同时指出SEH不支持面向对象编程的限制及其解决方案。
摘要由CSDN通过智能技术生成

        SEH的全称是Structured Exception Handling,是Windows操作系统提供的一种异常处理方式。SEH是属于操作系统的特性,不为特定语言设计,从它的名字就能看出它是一种结构化的异常处理方式。SEH包括了2个部分:终止处理__try/__finally和异常处理__try/__except,下面分别进行介绍。

        终止处理__try/__finally
        __try/__finally可以保证无论try块内的代码执行结果如何,finally块内的代码总会被调用和执行。现在用下面的这个VC++中的控制台程序来说明。

int _tmain(int argc, _TCHAR* argv[])
{
	__try
	{
		MessageBox(NULL, _T("Message from '__try' section"), _T("Test"), MB_OK);

		// 除零,人为的使程序崩溃
		//
		int i = 13;
		int j = 0;
		int m = i / j;
	}
	__finally
	{
		// 在这里添加处理程序崩溃情况的代码
		//

		// 这里以弹出一个对话框为例子
		//
		MessageBox(NULL, _T("Message from '__finally' section"), _T("Test"), MB_OK);
	}

	MessageBox(NULL, _T("Funcation completed"), _T("Test"), MB_OK);

	return 0;
}

        编译上面的代码。运行生成的EXE,会弹出下面的对话

评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值