Je suis nouveau sur Java et lisais sa documentation sur les exceptions. , et en particulier la page Exceptions non vérifiées - La controverse .
Le résultat net dit:
Si l'on peut raisonnablement s'attendre à ce qu'un client se remette d'une exception, faites-en une exception vérifiée. Si un client ne peut rien faire pour récupérer de l'exception, faites-en une exception non vérifiée.
Je ne comprends pas l'article. De quoi parle la «controverse»? Pouvez-vous l'expliquer en termes simples?
java
api-design
exceptions
ABcDexter
la source
la source
Réponses:
Je vais vous donner un exemple en premier (mais à la fin, c'est la réponse à la controverse).
Supposons que vous éditez un document dans un éditeur de documents basé sur Java et après avoir terminé, choisissez Fichier-> Enregistrer sous ... et vous avez choisi d'enregistrer le document dans un volume sur lequel vous n'avez pas l'autorisation d'écriture. L'éditeur ne vous écraserait pas avec une trace de pile laide, il vous dirait simplement qu'il ne pouvait pas enregistrer le fichier et il vous permettait de continuer à modifier et / ou à enregistrer à un autre emplacement.
Dans un tel cas, il est probable qu'une exception vérifiée était attendue, interceptée et mise à exécution pour s'en remettre gracieusement.
D'un autre côté, elles supposent une division par zéro ou une exception de pointeur nul causée par une erreur de programmation qui ne pointe sa vilaine tête que dans certaines conditions. Cela peut arriver n'importe où dans le code, la RAM peut être corrompue, etc. Aucun document API ne vous dirait "cette méthode jetterait une division par zéro si la RAM est corrompue" .
Les exceptions vérifiées doivent faire partie de la conception et les utilisateurs de cette API doivent se préparer à les gérer. Des exceptions non contrôlées pourraient se produire presque partout et sont hors de notre contrôle.
La controverse provient du fait que les programmeurs utilisent des exceptions non contrôlées (s'étendant de RuntimeException) lorsqu'ils doivent utiliser des exceptions vérifiées:
la source
Il n'y a pas de controverse sur cette page. C'est Oracle qui dit aux gens d'utiliser les exceptions vérifiées.
La fausse «controverse» qu'ils ont inventée ici se situe entre les concepteurs de langues et les utilisateurs de langues. Les concepteurs ont permis aux gens de lancer et d'attraper des choses qui (dans leur esprit) ne devraient pas être jetées ou attrapées. Ils ont donc créé une page Web se plaignant des développeurs paresseux.
la source