Windows核心编程:结构化异常处理

本文详细介绍了Windows核心编程中的结构化异常处理,包括终止处理程序和异常处理程序的工作原理,以及如何处理硬件和软件异常。通过示例代码展示了__try和__except关键字的使用,并探讨了C++异常与结构化异常的区别。
摘要由CSDN通过智能技术生成
 

作者:shenzi

链接:http://blog.csdn.net/shenzi

Windows核心编程:结构化异常处理
     结构化异常处理(structured exception handling,SEH)带来的好处是我们在写代码时,可以先集中精力完成软件的正常工作流程。如果在运行的时候出现了什么问题,系统会捕获这个问题,并且通知我们。
     使用SEH,并不意味着可以完全忽略代码中可能出现的错误,但是我们可以将软件主要功能编写和软件异常情况处理这两个任务分离开。这样就可以先集中注意力完成手头上的工作,稍后再去处理软件可能会遇到的各种错误情况。
     SEH实际上包含两方面的功能:终止处理(termination handling)和异常处理(exception handling)。
1.终止处理

    终止处理程序确保不管一个代码块(被保护代码(the guarded body))是如何退出的,另一个代码块(终止处理程序)总能被调用和执行。终止处理的语法(当使用Microsoft Visual C++编译器时)如下所示:
        
__try {
        // Guarded body
        被保护代码
        ...
    }
    __finally {
        // Termination handler
        终止处理程序
        ...
    }

    在这段代码中,操作系统和编译器的协同工作保证了不管被保护代码部分是如何退出的——无论我们在被保护代码中使用了return,还是goto,又或者longjump语句(除非调用ExitProcess , ExitThread , TerminateProcess , 或TerminateThread 来终止进程或线程)——终止处理程序都会被调用,即 __finally 代码块都能执行。
    一条好的经验法则是,不要在终止处理程序里包含让try块提前退出的语句,这意味着从try块和finally块中移除return,continue,break,goto等语句,即把这些语句放在终止处理程序之外。
     当系统因为try代码块中的代码提前退出而执行f

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值