/ / O que é mais tempo ideal: if ou exception - java, exception, execution-time

O que é mais tempo ideal: if ou exception - java, exception, execution-time

O que custa com certeza menos tempo para execução entre as duas opções:

UMA:

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

ou:

B:

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

Respostas:

10 para resposta № 1

Sem ter que fazer benchmark: As exceções são SEMPRE muito mais caras do que programar defensivamente e usar ifs como guarda nula, etc. As exceções são sempre mais caras (várias ordens de magnitude), porque o rastreamento de pilha precisa ser gerado.

Pergunta SO relevante com benchmark: Quão lentas são as exceções Java?


16 para resposta № 2

if definitivamente.

Lançar uma exceção é uma operação cara e esse não é o propósito de Exception.

O objetivo da exceção é capturar condições excepcionais que podem surgir em tempo de execução, mas você não deve codificar para gerar exceção para tomar essa decisão.


5 para resposta № 3

Se emite um único ramo. Ao lançar uma exceção, "desenrola" a pilha, o que leva muito mais tempo.