代码大全读后杂记-04 错误处理技术

[size=small][color=brown]【题外话】 今天下午在公司犯困打盹的间隔,看到了同学开的公司现在已经红红火火,难免有些惆怅,虽然我知道不应太在意外在的物质,但对个人价值的体现或梦想的追逐与实现还是非常佩服的。虽然我大概走不出一条所谓创业的路,但自己的梦想依旧需要在现实中用汗水和努力去赢取,留下此言以示激励,也愿上帝能够加添给我力量,让我勇往直前:)[/color][/size]

好吧,继续看书吧先;

在java和C++用,可以用断言等技术来处理不应该发生的错误;但有可能会发生的错误又当如何处理呢?代码大全中列举了如下几点,按照自己的经验来说,我觉得写的挺齐全的了。下面这些处理方法并不是适用于任何场景,需要按照实际需要来决定选择何种方式~

[b]1. 返回中立值[/b]
中立值就是一个没有危害的值,这个要看找你写代码时候具体的场景来决定了,比如说int值就返回0(或者返回-1之类),字符串就返回"",指针操作就返回null等等;

[b]2. 换用下一个正确的数据[/b]
在做某个循环操作的时候,在中间某个环节发生了错误,那么就继续运行下去,直到得到下一个正确的答案为止,比如每秒以100次的速度读取温度计的数据,如果有一次发生了错误,那么就尝试1/100秒后读下次的数据并返回;这个方法也只是适用于某种场景;

[b]3. 返回与前一次相同的数据[/b]
比如在绘制图案时,在绘制某个区域时读取颜色数据错误,那么就选择用最近一次的颜色来绘制之,因为,理论来说,绘制的图案区域应该是彼此相连的

[b]4. 换用最接近的合法值[/b]
比如某个测试仪只能测定某个范围内的速度,比如0~100,如果你观测的物体速度大于100了,那么就返回最大值100。(如果经常发生超越100的观测物体,就需要修改程序来调整测速范围了)

[b]5.把警告信息记录到日志中去[/b]
这个方法可以和其他的错误处理技术合用,保留下足够的日志信息可以让你更准确的定位错误发生的原因,这在商业软件中是比较常用的。客户肯定不喜欢你卖给他的软件跑出了你自己都说不清楚的错误...

[b]6.返回一个错误码[/b]
使用这个方法的前提是,调用此模块的某个子程序了解你返回错误码所代表的意思,比如你返回-1表示拥护错误,返回-2表示密码错误等。当然,你也可以抛出某些异常。
可以选择如下几个方法:
1. 设置一个状态变量的值(使用者可以通过该变量了解该方法的错误原因)
2. 直接返回一个值表示函数的状态
3. 利用异常机制抛出异常

[b]7.调用错误处理子程序或对象[/b]
用一个全局或几个专用的子程序或对象来处理所有发生的异常,这个方法的优点就是把所有异常处理的职责都集中在一起,让调试变得更加简单。但这也是缺点,因为这样就造成了程序代码之间的过度耦合。

[b]8. 当错误发生时显示出错信息[/b]
一般在带有界面的程序中用到该方法,让用户可以及时的得到错误的信息。该方法的缺点就是在软件本地化时会遇到挑战。另外,最好不要将所有的错误都告诉用户,一是有些错误原因过分专业,用户不需知道;二是暴漏过多错误原因,也让攻击者有机可乘。

[b]9.用最妥当的方式在局部处理错误[/b]
好吧,作者在这一点想表达的意思我没怎么看懂...

[b]10.关闭程序[/b]
某些极端重要的应用程序中,就需要用这种暴力的方式来处理异常。比如书中提到的一个给病人注射药剂的程序,如果接收到一个错误的放射剂量,最好关闭程序让医生来解决,而不是选择注射最大量等等方法...这可是人命关天啊...

有些方法我也很少用到,以后写代码时可以借鉴一下
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值