首页 > 其他 > 详细

异常处理的一些思考

时间:2015-09-24 22:55:02      阅读:191      评论:0      收藏:0      [点我收藏+]

假设有一个业务 serviceA,一个 通用的 方法 commonService

function serviceA(){     
     obj = commonService(); # 内部报异常,捕获异常后 返回默认值,此处为null
    ....
     heavyFunction()  # 可能的慢速调用
    ....
    otherService.doSomthing(obj)  # 函数体内调用 obj的方法,属性将导致空指针异常
}

commonService 内部捕获异常的坏处
1. 代码编程原则是尽早暴露错误,这样当程序异常时可以找到异常的原始原因。
   将异常点延迟到 otherService.doSomthing 函数内部,这样程序异常终止时,在 "异常点" 将查不到 root cause,因为此处   异常是空指针异常,commonService内部代码造成的异常将无法查看了
2. 异常延后的后果是本该结束的程序,又多执行了一些时间,如果后面有慢速调用,则大大增加了程序执行时间
3. commonService 异常时返回默认值或默认处理,在当前的业务 serviceA中可能此默认处理是正确的,而其他业务serviceB,serviceC
   可能有不同的处理,这样 commonService的通用性就削弱了。

异常处理的一些思考

原文:http://my.oschina.net/rock117/blog/510860

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!