论坛首页 Java企业应用论坛

面试题:用Exception异常还是if判断

浏览 34236 次
精华帖 (0) :: 良好帖 (6) :: 新手帖 (13) :: 隐藏帖 (1)
作者 正文
   发表时间:2010-08-24  
hxbot 写道
if else    面向过程
exception  面向对象



两个都是面向过程
0 请登录后投票
   发表时间:2010-08-24  
seele 写道
hxbot 写道
if else    面向过程
exception  面向对象



两个都是面向过程


Exception有类层次性,,不能说是面向过程。
0 请登录后投票
   发表时间:2010-08-24  
显然用if判断,看看jdk自带的一些源码,经常可以看到下面这种写法
public void method(List list) throws Exception {
if(list == null) {
  throw new Exception("...");
}
}


0 请登录后投票
   发表时间:2010-08-25   最后修改:2010-08-25
判断参数是否合法的话,推荐用exception。代码可读性好,真发生错误时也容易标明问题所在。

性能问题不用考虑,毕竟参数错误不是每次调用都发生的。
0 请登录后投票
   发表时间:2010-08-25  
我觉得还是采用exception比较合适吧~~体现java思想
0 请登录后投票
   发表时间:2010-08-25  
skydream 写道
判断参数是否合法的话,推荐用exception。代码可读性好,真发生错误时也容易标明问题所在。

性能问题不用考虑,毕竟参数错误不是每次调用都发生的。

同意,好多童鞋拿性能说事,人云亦云吧?
0 请登录后投票
   发表时间:2010-08-25  
java规范的定义是说异常不要参与控制流程,你不能把异常作为一种正常的控制流程作为程序的一部分,这样是不对的.
面试官正真要考的就是这个..
没有哪个公司会用异常来处理参数验证..
0 请登录后投票
   发表时间:2010-08-25  
如果您功力深 就if else
否则 用的Java的异常处理机制
0 请登录后投票
   发表时间:2010-08-25  
先要明确异常是做什么的,异常是程序执行时的一些非正常的情况,如果有不正确的数据、逻辑等会抛出异常。
if else是逻辑判断,控制程序流程。
断言是预先决断应该是什么样的值,不应该是什么类型等明确的条件

从定义上不太好区分这些怎么去用,但可以从使用场景去考虑,下面的可能不十分准确,但大家可以参考一下:
异常:是程序员写给其他程序员的,比方说我写了一个方法,如果其他人使用我这个方法的时候有可能不按我想的路子使用,可能会引起我的方法产生不正常的处理,这时候我要使用异常,而且可以决定产生异常了是由我这个方法本身进行处理(catch语句中处理)还是交给调用者进行处理(直接把异常抛出)
if else 就是我写的方法,要进行逻辑判断,就用它,没什么好说的吧。
断言可用处大了,是我在调用别人写的方法,或者我处理程序时对通过其他途径得到的数据(如调用别人方法的返回值(好象不建议用断言),通过参数传入的值)等进行假设它就是某值时使用的。是方便开发、调试提供的一个语法元素
0 请登录后投票
   发表时间:2010-08-25  
1. 对可预见的运行时异常当进行捕捉并处理,比如空指针等。通常,对空指针的判断不是使用捕捉NullPointException的方式,而是在调用该对象之前使用判断语句进行直接判断,如:
//若不对list是否为null进行检查,则在其为null时会抛出空指针异常
if(null != list && 0 < list.size()){
for(int i = 0; i < list.size(); i++){
}
}
2. 对于经常发生的可预计事件不要采用异常
3. 不要使用异常实现控制结构。
4. 通常的思想是只对错误采用异常处理:逻辑和编程错误,设置错误,被破坏的数据,资源耗尽,等等。
对于java的编码规范,有具体描述。我想考官希望得到的是这个方向的答案。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics