Null vérifier la chaîne de vs attraper NullPointerException

Un service web renvoie un énorme XML et j'ai besoin d'accéder profondément imbriqués les champs d'elle. Par exemple:

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

Le problème est que getFoo(), getBar(), getBaz() peuvent renvoyer toutes null.

Cependant, si je vérifie pour null dans tous les cas, le code devient très détaillé et difficile à lire. De plus, j'ai peut-être raté l'vérifie pour certains champs.

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();

Est-il acceptable d'écrire

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

ou serait-ce considéré comme un antipattern?

  • Je n'aurais pas l'esprit de la null vérifie que beaucoup, depuis wsObject.getFoo().getBar().getBaz().getInt() est déjà une odeur de code. Lisez ce que le "la Loi de Déméter" est et préfèrent restructurer le code en conséquence. Alors le problème de la null vérifie sera parti. Et pensez à utiliser Optional.
  • Ce sujet de l'utilisation de XPath et en le laissant à leur évaluation?
  • Ce code est probablement généré par wsdl2java, qui n'a aucun respect pour la Loi de Déméter.
InformationsquelleAutor David Frank | 2016-06-22