Je suis un peu en désaccord avec un développeur plus expérimenté sur cette question et je me demande ce que les autres en pensent; notre environnement est Java, EJB 3, services, etc.
Le code que j'ai écrit appelle un service pour obtenir des choses et pour créer des choses. Le problème que j'ai rencontré est que j'ai obtenu des exceptions de pointeur nul qui n'avaient aucun sens. Par exemple, lorsque je demande au service de créer un objet, je récupère null; lorsque j'essaie de rechercher un objet avec un ID valide connu, j'obtiens null back. J'ai passé quelque temps à essayer de comprendre ce qui n'allait pas dans mon code; comme je suis moins expérimenté, je suppose généralement que j'ai fait quelque chose de mal, mais il s'avère que la raison des retours nuls était la sécurité. Si l'utilisateur principal utilisant mon service n'avait pas les bonnes autorisations pour le service cible, il renvoie simplement null. La plupart des autres services ici ne sont pas non plus très bien documentés, donc apparemment, c'est juste quelque chose que vous devez savoir.
C'est assez déroutant pour un développeur qui écrit du code qui interagit avec le service. Cela aurait beaucoup plus de sens pour moi si le service contenait une exception qui me dirait que l'utilisateur n'avait pas les autorisations appropriées pour charger cette chose ou pour créer cette chose; Je saurais alors immédiatement pourquoi mon service ne fonctionnait pas comme prévu.
Le développeur le plus expérimenté qui a écrit le service a fait valoir que demander les données n'est pas une condition d'erreur et que les exceptions ne devraient être levées que dans une condition d'erreur, pas lorsque l'utilisateur n'a pas accès aux données. Ces données sont souvent recherchées dans une interface graphique, et pour les utilisateurs sans les bonnes autorisations, ces choses «n'existent tout simplement pas». Donc, en bref: demander n'est pas faux, donc pas d'exception. Les méthodes get renvoient null car pour ces utilisateurs ces choses «n'existent pas». Les méthodes de création renvoient null lorsque l'utilisateur n'était pas autorisé à créer cette chose.
Est-ce une pratique normale et / ou bonne? Je préfère utiliser les exceptions parce que je trouve beaucoup plus facile de savoir ce qui se passe. Donc, je préfère par exemple également lancer une NotFoundException si vous avez demandé un objet avec un ID non valide, plutôt que de retourner null.