两个选项之间执行的时间肯定更短:
A:
if(something!=null){
...
}else{
//log
}
或:
B:
try{
something.getField();...
}catch(Exception e){
//log
}
答案 0 :(得分:16)
if
。
抛出异常是一项代价高昂的操作,这不是Exception
的目的。
Exception的目的是捕获在运行时可能出现的异常情况,但是您不应该编写代码来生成异常以做出该决定。
答案 1 :(得分:10)
甚至没有基准测试:异常总是比防御编程更昂贵并且使用ifs作为空值保护等。异常总是更昂贵(几个数量级),因为必须生成堆栈跟踪。
与基准相关的SO问题:How slow are Java exceptions?
答案 2 :(得分:5)
如果发出一个分支。抛出异常"展开"堆栈,需要更长的时间。