Нулевая цепочка проверок против перехвата NullPointerException
Веб-сервис возвращает огромный XML, и мне нужно получить доступ к его глубоко вложенным полям. Например:
return wsObject.getFoo().getBar().getBaz().getInt()
Проблема в том, чтоgetFoo()
, getBar()
, getBaz()
может все вернутьсяnull
.
Однако, если я проверюnull
во всех случаях код становится очень многословным и трудным для чтения. Более того, я могу пропустить проверки некоторых полей.
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();
Это приемлемо, чтобы написать
try {
return wsObject.getFoo().getBar().getBaz().getInt();
} catch (NullPointerException ignored) {
return -1;
}
или это будет считаться антипаттерном?