Structured Exception Handling(SEH)
来源:互联网 发布:淘宝交保证金在哪里交 编辑:程序博客网 时间:2024/05/16 19:50
SEH可以让你程序在运行期发生错误时,捕捉到它,并且能按照你的意思做出处理.
SEH分为两个部分:termination handling和exception handling
termination handling(结束处理程序)
visual c++中是用这样的格式实现结束处理程序的
_try
{
//Guarded code
.......
}
_finally
{
//Termination handler
......
}
经过编译器和OS的合作.这个程序结构能使你在try块返回之前执行finally块中的处理程序,然后再跳出try块.也就是说在try块里面执行return/goto/continue/break等语句时,会在这些语句之前首先执行finally块中的代码,然后try块在返回.
用结束处理程序的好处呢就是可以使异常的处理代码集中放在一块.方便维护,也增加了程序的健壮性.但是在局部退出时,根据编译器和OS的不同,会产生不同大小的汇编代码(这些代码保证了在try提前推出之前先执行finally块).这样无形中增加了系统的负担.而如果把return/goto/continue/break等语句直接用_leave关键字替换,会使try块之间跳到结束的地方,即try块的右括号,try是正常流程退出,这样产生的汇编代码就很少.try是正常流程退出,减轻了系统的负担.
强制执行finally块有三种情况
- 从try块进入finally块的正常程序流程
- 局部展开:从try块中过早的退出(return/goto/continue/break),强制转移到finally块
- 全局展开(会在异常处理程序中说明)
在这一段最后再介绍一个API函数 Bool AbnormalTermination()..如果程序按正常流程退出try块返回FALSE.反之为TRUE
异常处理程序
代码结构:
_try
{
//Guarded code
.......
}
_exception(exception filter)
{
//exception handler
......
}
在异常处理程序的块中用return/goto/continue/break等语句不会造成速度和代码规模的影响,但是这个做法是不好的.强烈建议不要用.
上面代码中的filter只能是三个值
- EXCEPTION_EXECUTE_HANDLER :在对应的try块中,如果发生了异常,程序就会转到exception块的开头,开始执行.exception块中代码执行之后,程序转到exception块之后的第一条指令开始执行
- EXCEPTION_CONTINUE_EXECUTION:在对应的try块中产生了异常,程序转到exception块中执行.在执行完exception块中代码之后,重新执行try块
- EXCEPTION_CONTINUE_SEARCH:这个表示符号告诉系统,去查找前一个与exception块相匹配的try块,并调用这个try块的异常处理器
- Structured Exception Handling(SEH)
- Structured Exception Handling(SEH)
- 走进SEH(Structured Exception Handling)
- 异常处理SEH(Structured Exception Handling)
- 谈SEH( structured exception handling )异常处理
- 异常处理与MiniDump详解 SEH(Structured Exception Handling)
- Structured Exception Handling
- Structured Exception Handling (1)
- Structured Exception Handling (2)
- Structured Exception Handling
- Structured Exception Handling
- SEH (Structured Exception Handling) Security Changes in XPSP2 and 2003 SP1
- 异常处理与MiniDump详解(3) SEH(Structured Exception Handling)
- 异常处理与MiniDump详解(3) SEH(Structured Exception Handling)
- SEH——Structured Exception Handling(结构化异常处理)
- 异常处理与MiniDump详解(3) SEH(Structured Exception Handling)
- 异常处理与MiniDump详解(3) SEH(Structured Exception Handling)
- SEH( Structured Exception Handler) for Windows
- Struts+Spring+Hibernate实现上传下载
- struts中的文件上传解决
- Java 中要注意的一些,也是我们容易忘记的!
- 在Struts 2中实现文件上传
- JSP开发中request对象URL方法对照表
- Structured Exception Handling(SEH)
- 字符匹配 真正理解KMP算法的力量 ( 修正)
- 程序员成功之路 The road ahead for programmer
- 科幻,奇幻,武侠---科幻篇
- linux简单指令
- fastreport中输出人民币大写(原作者0769.KONG)
- BMP格式
- GIF格式
- 文字透明的设置,proptrysheet 使用