什么是最佳时间:if或exception

Rox*_*ana 7 java exception execution-time

确保两个选项之间执行的时间更短的成本:

A:

if(something!=null){
    ...
}else{
    //log
}
Run Code Online (Sandbox Code Playgroud)

要么:

B:

try{
    something.getField();...
}catch(Exception e){
    //log
} 
Run Code Online (Sandbox Code Playgroud)

Jig*_*shi 16

if 肯定.

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

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


hie*_*tfu 10

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

基准测试的相关问题:Java异常有多慢?


Tri*_*ics 5

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