Cadeia de verificação nula vs captura de NullPointerException

Um serviço da Web retorna um XML enorme e eu preciso acessar campos profundamente aninhados. Por exemplo:

return wsObject.getFoo().getBar().getBaz().getInt()

O problema é quegetFoo(), getBar(), getBaz() todos podem retornarnull.

No entanto, se eu procurarnull em todos os casos, o código se torna muito detalhado e difícil de ler. Além disso, posso perder as verificações de alguns dos campos.

if (wsObject.getFoo() == null) return -1;
if (wsObject.getFoo().getBar() == null) return -1;
// maybe also do something with wsObject.getFoo().getBar()
if (wsObject.getFoo().getBar().getBaz() == null) return -1;
return wsObject.getFoo().getBar().getBaz().getInt();

É aceitável escrever

try {
    return wsObject.getFoo().getBar().getBaz().getInt();
} catch (NullPointerException ignored) {
    return -1;
}

ou isso seria considerado um antipadrão?

questionAnswers(19)

yourAnswerToTheQuestion