Objection à l'exception vérifiée
Pendant des années, je n'ai pas pu obtenir de réponse décente à la question : Pourquoi certains développeurs sont-ils si opposés à vérifié anormalement ? J'ai eu plusieurs conversations, lu des articles de blog et lu le point de vue de Bruce Eckel (c'est la première personne que j'ai jamais vue s'exprimer contre cela).
J'écris actuellement du nouveau code et je fais très attention à la façon dont je gère les exceptions. J'essaie de comprendre le point de vue de la foule "nous n'aimons pas les exceptions vérifiées", mais je n'arrive toujours pas à le comprendre.
Chaque conversation que j'ai eue s'est terminée par la même question sans réponse... Laissez-moi configurer ceci :
De manière générale (par la conception de Java),
Une affirmation que j'entends souvent est que si une exception se produit, tout ce que le développeur peut faire est de quitter le programme.
Un autre argument courant que j'entends est que les exceptions vérifiées rendent plus difficile la refactorisation du code.
En ce qui concerne l'argument "Je viens d'arrêter", ce que je dis, c'est que même si vous quittez, vous devez afficher un message d'erreur raisonnable. Si vous évitez simplement de gérer les erreurs, vos utilisateurs ne seront pas très contents lorsque le programme se fermera sans indication claire de la raison.
Pour ceux qui "cela rend le refactoring difficile", cela suggère que le niveau d'abstraction approprié n'a pas été choisi. Au lieu de déclarer qu'une méthode lève une IOException, l'IOException doit être convertie en une exception plus appropriée à ce qui se passe.
Je n'ai aucun problème à envelopper Main avec catch(Exception) (ou dans certains cas catch(Throwable) pour garantir que le programme se termine correctement - Mais j'attrape toujours l'exception spécifique que je dois intercepter. Cela me permet au moins d'afficher un message d'erreur approprié
La question à laquelle les gens ne répondent jamais est la suivante :
>Si vous lancez plutôt la sous-classe RuntimeException
Exception
sous-classe, alors comment savoir
ce que vous devez attraper ?
si vous gérez les exceptions système de la même manière. Throwable, alors vous gérez les exceptions système et les erreurs de VM (et autres) de la même manière. Cela me semble faux
Si la réponse est que vous n'interceptez que les exceptions dont vous savez qu'elles sont levées. des exceptions ont été levées ? Que se passe-t-il lorsque le programmeur X lance une nouvelle exception et oublie de l'attraper ? Cela me semble dangereux
.Je dirais que le programme affichant la trace de la pile est faux. Les gens qui n’aiment pas les exceptions vérifiées ne le pensent-ils pas ?
Donc, si vous n'aimez pas les exceptions vérifiées, pouvez-vous expliquer pourquoi ? Et répondre à cette question sans réponse ?
Je ne cherche pas de conseils sur l'utilisation de l'un ou l'autre modèle, je cherche les raisons pour lesquelles les gens s'étendent depuis RuntimeException au lieu de depuis Exception, et pourquoi ils attrapent l'exception puis la relancent one Au lieu d’ajouter un lancer RuntimeException à leurs méthodes. J'aimerais comprendre la motivation pour ne pas aimer les exceptions vérifiées.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!