Est-ce une bonne pratique d'implémenter une gestion des exceptions inutile, juste au cas où une autre partie du code ne serait pas codée correctement?
Exemple de base
Un simple, donc je ne perds pas tout le monde :).
Disons que j'écris une application qui affichera les informations d'une personne (nom, adresse, etc.), les données étant extraites d'une base de données. Disons que je suis celui qui code la partie de l'interface utilisateur et que quelqu'un d'autre écrit le code de requête DB.
Imaginez maintenant que les spécifications de votre application indiquent que si les informations de la personne sont incomplètes (disons, le nom est manquant dans la base de données), la personne codant la requête doit gérer cela en retournant "NA" pour le champ manquant.
Que faire si la requête est mal codée et ne gère pas ce cas? Et si le gars qui a écrit la requête vous traite d'un résultat incomplet, et lorsque vous essayez d'afficher les informations, tout se bloque, car votre code n'est pas prêt à afficher des éléments vides?
Cet exemple est très basique. Je pense que la plupart d'entre vous diront "ce n'est pas votre problème, vous n'êtes pas responsable de cet accident". Mais, c'est toujours votre partie du code qui plante.
Un autre exemple
Disons que c'est maintenant moi qui rédige la requête. Les spécifications ne disent pas la même chose que ci-dessus, mais le gars qui écrit la requête "insert" doit s'assurer que tous les champs sont remplis lors de l'ajout d'une personne à la base de données pour éviter d'insérer des informations incomplètes. Dois-je protéger ma requête "select" pour m'assurer que je donne les informations complètes au gars de l'interface
Questions
Que se passe-t-il si les spécifications ne disent pas explicitement "c'est ce type qui est chargé de gérer cette situation"? Que faire si une troisième personne implémente une autre requête (similaire à la première, mais sur une autre base de données) et utilise votre code d'interface utilisateur pour l'afficher, mais ne gère pas ce cas dans son code?
Dois-je faire ce qui est nécessaire pour éviter un éventuel crash, même si ce n'est pas moi qui suis censé gérer le mauvais dossier?
Je ne cherche pas une réponse comme "(s) il est le seul responsable du crash", car je ne résout pas un conflit ici, j'aimerais savoir, si je protège mon code contre des situations ce n'est pas ma responsabilité gérer? Ici, un simple "si vide fait quelque chose" suffirait.
En général, cette question aborde la gestion des exceptions redondantes. Je le demande parce que lorsque je travaille seul sur un projet, je peux coder 2 à 3 fois une gestion d'exception similaire dans les fonctions successives, "juste au cas où" j'ai fait quelque chose de mal et j'ai laissé un mauvais cas passer.