什么是最佳时间:if或exception

时间:2014-06-13 07:35:36

标签: java exception execution-time

两个选项之间执行的时间肯定更短:

A:

if(something!=null){
    ...
}else{
    //log
}

或:

B:

try{
    something.getField();...
}catch(Exception e){
    //log
} 

3 个答案:

答案 0 :(得分:16)

绝对是

if

抛出异常是一项代价高昂的操作,这不是Exception的目的。

Exception的目的是捕获在运行时可能出现的异常情况,但是您不应该编写代码来生成异常以做出该决定。

答案 1 :(得分:10)

甚至没有基准测试:异常总是比防御编程更昂贵并且使用ifs作为空值保护等。异常总是更昂贵(几个数量级),因为必须生成堆栈跟踪。

与基准相关的SO问题:How slow are Java exceptions?

答案 2 :(得分:5)

如果发出一个分支。抛出异常"展开"堆栈,需要更长的时间。