Je vais développer plus mon propos, parce que malgré tous les votes négatifs, je ne pense pas être totalement à l'ouest. Donc je me laisse un dernier post pour tenter de vous convaincre.
Je suis d'accord. Pas nécessairement avec le fait que je ne sache pas me servir des exceptions (quoi que ce soit possible), mais avec le fait que certains dévs les utilisent n'importe comment. Or, dans un environnement de projet, entre les développeurs légitimement faibles (stagiaires dont on fait passer le code en prod sans grosse révision), les développements légitimement faibles (code de test qui se retrouve en prod sans réécriture), les contraintes de production qui empêchent de prendre le temps nécessaire pour corriger chaque bug au moment ou on le découvre et les démos au client qui doivent marcher quand bien même tout n'est pas codé, je suis tombé sur ce genre de récupérations d'erreurs légères.
Autre exemple, le cycle de vie des objets. En C++ on y échappe pas, vu qu'un objet non initialisé, comme un objet delete ne peut être dissocié d'un objet en vie. En Java, on peut juste faire un test de non nullité.
Je suis donc déjà tombé sur du code Java constellé de tests de non nullité non commentés, sans logs sur le else, et sans même que le dév qui les ai écrits ne sache me dire dans quelles conditions l'objet pouvait être null. Juste, tout le code en était constellé, il en déduisait donc que l'alternative était possible.
Voire, le dév m'a parfois juste répondu que des fois l'objet était null, et qu'il avait loggé la chose. Effectivement, il y avait un log dans son code que personne ne comprenait (pas même lui, fondamentalement, vu qu'il ne savait pourquoi l'objet pouvait être null), et qu'il n'avait juste jamais remonté, alors que tout le monde pensait que le bug lui était dévolu, vu que le log était dans son code.
En C++, ce genre de code léger n'existe pas, et donc les erreurs ne peuvent passer sous silence. Quoi que, dixit un de mes anciens boss, les smartpointers de boost permettent d'éviter un paquet de crash
Quant à passer tous ses dévs au goudron et aux plumes, je paraphraserai un grand penseur moderne : On est tous le bidouilleur de quelqu'un.
Maintenant, l'autre question que tu soulèves est : "Est ce que ce genre d'erreurs peuvent être associées au langage ?"
Je te répondrais par une question : "A quoi cela sert il de catcher un NullPointerException ?"
Partager