第二十五章 异常处理

一、终止处理程序

      1、样式:

__try
{
 ...
}
finally
{
 ...
}

      2、特性:从try部分退出时必须运行finally部分代码
      3、性质:
            (1)、从try块正常走到结尾时运行finally代码, __leave关键字有这种效果
            (2)、从try块提前退出(由 goto, longjump, continue, break, return引发)时,将运行finally代码 (局部展开:会引发临时变量的创建)
            (3)、由于try出现异常时,将运行finally代码(全局展开:由于异常发生时程序将从try退出进入except代码块)
二、异常处理程序
     1、样式:
__try
{
 ...
}
__except(exception filter)
{
 ...
}
     2、特性:try代码块中出现异常时,程序将从try退出进入except代码块
     3、性质:
            (1)、异常处理程序没有局部展开,也就是说try中可以出现continue等关键字,而不出现性能损失,但是有全局展开,阻止全局展开可在finally中添加return
            (2)、try后要么跟finally要么跟except
            (3)、异常处理程序被执行之前必须执行异常过滤程序,异常过滤程序返回三种值(EX*)之一
            (4)、GetExceptionCode函数返回刚刚发生异常的类型
            (5)、GetExceptionInformation函数返回异常的详细信息
            (6)、RaiseException可以主动抛出一个异常
            (7)、如果异常没有被程序处理,则该异常将走以下流程:
                    :AddVectoredExceptionHandler ->向量化异常处理队列
                    :UnhandledExceptionFilter
                         :将异常报告给调试器(假如程序在调试器控制之下)
                         :SetUnhandledExceptionFilter(全局异常过滤程序)
                         :AddVectorContinueHandler (向量化异常继续处理队列)
                         :再次通知调试器,调用调试器
                         :系统内核获取异常通知用户


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值