您的位置:首页 > 编程语言 > C语言/C++

关于C++异常处理的一些思考

2015-04-26 11:36 239 查看
一个程序,肯定不会是完美的,永远都能正常运行,偶尔总会出现那么一些问题。

一般,程序出问题,我们都叫做bug,异常跟bug可以说是同意的,也可以看成是bug里面比较严重的。出现bug,无非就是需求理解错误,沟通出现差异,手误之类的原因,还有一种,就是代码质量导致的。前面几种,只要在工作上细心、交流充分、需求理解清晰,都可以避免,从而节省时间(时间就是金钱)。而后面一种,就跟程序员写代码的水平有很大关系了,产生的问题基本都是程序崩溃,这个是程序员最害怕的。

要解决这个问题,分为以下几步:

1.逻辑严密:主要是指一些设计上的逻辑完备,条件分支全部处理到,没有漏掉任何一个。

2.注意细节:调用函数之后,如果有执行是否成功的标识,一定要判断;得到的指针一定要判空;变量要初始化……这些在代码规范里面都是有的,做到了,可以避免很多错误。

3.对于没有成功标识的函数调用,可能出现异常的话,需要进行异常捕获。

第一条是必须做到的,这关系到你的程序本身的功能是否完善,否则程序都是个残废品,再谈异常处理也没用。第二条里面的一些东西,可以用异常捕获代替,但是异常捕获导致程序复杂、可读性变差、效率降低,所以能用条件判断的,就不用异常捕获。(函数返回true/false的,是程序的逻辑,是不同分支,不能用异常来处理,因为这个一般不算是异常情况,当然具体还是看怎么设计得)(另外,试过除0和空指针,C++标准异常捕获是不行的)关于第三条,有些函数,比如new操作,是可能失败的,会抛出异常,需要处理。当然,哪些调用会抛出异常,哪些不会,我现在也还搞不清楚,这点很头痛。不过好像有工具,可以抓到整个程序的异常,这也不失为一种很好的解决方案。

总之,认真、细致、按照规范来,大部分的问题都是可以很容易避免的,真正的难点只是少数,当然这需要实力了。

网上说C++的异常处理是半残废,不知道是什么意思。

本文出自 “山重水复” 博客,谢绝转载!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: