注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

多多的爹

 
 
 

日志

 
 

C与C++的异常处理 1  

2007-07-11 16:50:17|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
最近看完了C与C++的异常处理一文,收获还是挺多的。笔记一下,用不着以后再查看
第一部分:C的异常处理
首先需要说明异常的5个阶段
1)产生异常
2)异常被异常对象携带(某些时候可能是类,某些时候可能是整数)
3)捕获
4)过滤异常,以决定是忽略还是处理
5)针对前一步做操作,是继续还是处理,还是退出
在C中,是没有对象一说的。对于以上5步,分别说明:
1)产生异常后,如果是系统异常,会被系统接管(比如除0的操作,比如给无效指针赋值),否则走下步
2)因为没有对象,异常是通过一个erron的无符号整数携带
3)通过erron,来判断是否有异常
4)再判断这个异常是捕获,还是忽略
5)处理完异常后,再决定是退出还是继续
对于退出,C提供了两种方式,一种是友好的abort,一种是不友好的exit。abort会提示一个错误信息,然后程序退出。exit会不声不响的退出。因此说友不友好其实是不准确的。可能有人认为弹错误信息才是不友好的行为。
对于erron,需要注意的是,在访问之前,必须先将此值设置为0。最近我就遇到一个这样的bug。在VC8中,网络访问代码基本上是用C写的,在判断C函数执行结果的时用了erron。其中有个函数在调用前没有将erron设置为0,调用完后,再根据erron判断是否执行成功。因为在调用函数前erron就已经不正确了,函数执行正确也没有重置erron。程序再检查,获得的就是一个错误的结果。
  评论这张
 
阅读(8)| 评论(2)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017