锁定老帖子 主题:有效使用Java异常
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-10-26
最后修改:2012-10-28
我们经常进行逻辑判断,例如传入的参数表示一个类型,我们会这样 public Cake makeCake(int type) { if (type == Cake.HELLO) { cake = a hello cake; } else if (type == cake.WORLD) { cake = a world cake; } else { // 假设程序只能做两种蛋糕,这里你会做什么,是这样吗? log.debug("cake type error"); return null; } return cake; } 这里完全可以自己throw一个exception并且附上错误信息,远比打出日志然后返回一个null感觉舒畅。 throw new IllegalArgumentException("cake type error"); 甚至可以自己定义异常,增加或重载一些方法。 附图简单介绍一下异常类架构,所有的checked异常都是需要显示catch的,而unchecked则不需要,例如RuntimeException。常见的异常 edit v0.1: lingceng 写道 Shen.Yiyang 写道 组件、工具类部分应该尽量抛出异常;业务部分依据下层组件抛出的异常控制流程,但是尽量不要在多个地方来控制流程
嗯,有道理,不同类型,处理方式不一样。如果是在业务层,这里就应该会像freezingsky说的,用条件判断。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2012-10-26
如果方法的调用方,可以正确处理,甚至是必须要处理类似参数错误的情况.那么自定义一个异常的确是比返回null更好。毕竟异常的表达能力比返回值要强得多。
但如果只是一个非常简单的处理(比如就两种情况,返回null或者不返回null),那么不用异常也说的过去,毕竟代码更简单。 |
|
返回顶楼 | |
发表时间:2012-10-26
组件、工具类部分应该尽量抛出异常;
业务部分依据下层组件抛出的异常控制流程,但是尽量不要在多个地方来控制流程,应该固定在某一层完成; 就比较清晰了 |
|
返回顶楼 | |
发表时间:2012-10-27
javaeye越来越萧条了 唉
|
|
返回顶楼 | |
发表时间:2012-10-27
哎,开发的时候,谁还会注意这个呢,你们说,对吗,呵呵
|
|
返回顶楼 | |
发表时间:2012-10-27
如果可以预判,宁愿用多二个判断语句,而不是采用Exception。除非,预判的数量较多,或者是基于某种可读性之类的。
|
|
返回顶楼 | |
发表时间:2012-10-27
对流程没有影响的异常,只需要记录日志,不需要上抛异常。 异常不是到处都用来抛的
|
|
返回顶楼 | |
发表时间:2012-10-27
Shen.Yiyang 写道 组件、工具类部分应该尽量抛出异常;业务部分依据下层组件抛出的异常控制流程,但是尽量不要在多个地方来控制流程
嗯,有道理,不同类型,处理方式不一样。如果是在业务层,这里就应该会像freezingsky说的,用条件判断。 |
|
返回顶楼 | |
发表时间:2012-10-27
看程序的定位,如果作为lib,工具库的话,异常肯定是要抛的
在一个应用里面,有抛异常的地方,就必须有捕获异常的地方 异常也要分层设置 |
|
返回顶楼 | |
发表时间:2012-10-28
不是一直抛到表示层进行集中处理的么?
|
|
返回顶楼 | |