Lançar uma exceção ou retornar null
Se eu tenho a função abaixo, com duas escolhas
private MyObject findBlank() {
for (int i = 0; i < pieces.length; i++) {
if(pieces[i].isBlank()){
return pieces[i];
}
}
return null;
}
private MyObject findBlank() {
for (int i = 0; i < pieces.length; i++) {
if(pieces[i].isBlank()){
return pieces[i];
}
}
throw new NoSuchFieldError("No blank piece found!");
}
Deste método eu sei quedeve sempre devolver um objeto uma das 'peças' sempre éisBlank() == true
, o retorno nulo no final é apenas para agradar o compilador. Desde que este é o caso e meu código não funcionaria de qualquer maneira se retornou null, este é o correto por favor lançar uma exceção?
Minhas opções são:
return null e o aplicativo receberá um NullPointerException em algum caso de bordaretornar null e envolver o uso do método com verificações (myObject! = null)lançar uma exceção que irá explodi-lo em tempo de execuçãoEu acho que o que eu estou perguntando é, este é o lugar correto para lançar uma exceção? isto é, não há nada que eu possa fazer sobre isso se entrar na situação. Isso é classificado como "excepcional" ou devo verificar nulo o que meu método retorna (o que faz meu código parecer horrível). Se eu sei que não deve retornar nulo, então devo jogar a exceção certo?
Além disso, como eu escolheria qual exceção ou estenderia uma e lançaria a minha?