结构化异常处理(SEH) 一

SEH

结构化异常处理(Structured Exception Handing)是Windows操作系统处理程序错误或异常的技术。
SEH是操作系统的一种系统机制,与特定的程序设计语言无关。

发生异常时系统的处理顺序

  1. 系统首先判断异常是否应发送给目标程序异常处理例程【如果决定应该发送,并且目标陈晓旭正在被调试,则系统挂起程序并向调试器发送EXCEPTION_DEBUG_EVENT消息。这个可以用来探测调试器的存在】
  2. 如果程序没有被调试或者调试器未能处理异常,系统会继续查找是否安装了线程相关的异常处理例程,如果安装了线程相关的异常处理例程,系统就把异常发送给你的程序SEH处理例程,交由其处理
  3. 每个线程相关的异常处理例程可以处理或者不处理这个异常【如果他不处理并且安装了多个线程相关的异常处理例程,可交由链起来的其他例程处理】
  4. 如果这些例程均选择不处理异常【如果程序处于被调试状态,操作系统仍会再次挂起程序通知debugger】
  5. 如果程序未处于被调试状态或者debugger没有能够处理,并且你调用SetUnhandledExceptionFilter安装了最后异常处理例程的话,系统转向对它的调用
  6. 如果没有安装最后异常处理例程或者它没有处理这个异常,系统会调用默认的系统处理程序,通常显示一个对话框,可以选择关闭或者最后将其附加到调试器的调试按钮。【如果没有调试器能被附加于骑上或者调试器页处理不了,系统就调用ExitProcess终结程序】
  7. 不过在终结之前,系统仍然对发生异常的线程处理异常句柄来一次展开,这是线程异常处理例程最后清理的机会。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值