Quelqu'un peut expliquer la différence entre java.lang.RuntimeException
y java.lang.Exception
? Comment décider laquelle étendre si je crée ma propre exception ?
Réponses
Trop de publicités?Utilisation correcte de RuntimeException ?
De Exceptions non contrôlées - La controverse :
Si l'on peut raisonnablement s'attendre à ce qu'un client de se rétablir grâce à une exception, faites-la une exception vérifiée. Si un client ne peut rien faire pour se remettre de l'exception exception, faites-en une exception non vérifiée. exception non vérifiée.
Notez qu'une exception non vérifiée est une exception dérivée de RuntimeException
et une exception vérifiée est une exception dérivée de Exception
.
Pourquoi jeter un RuntimeException
si un client ne peut rien faire pour récupérer de l'exception ? L'article explique :
Les exceptions d'exécution représentent des problèmes qui sont le résultat d'un problème de programmation programmation, et en tant que tel, le code client API ne peut pas raisonnablement s'attendre à de les récupérer ou de les gérer de quelque de quelque manière que ce soit. Ces problèmes comprennent les exceptions arithmétiques, telles que la division par zéro ; les exceptions de pointeur, telles que la tentative d'accéder à un objet objet par le biais d'une référence nulle ; et les d'indexation, telles que les tentatives d'accès d'accéder à un élément de tableau par le biais d'une référence trop grand ou trop petit.
Extrait de la documentation d'Oracle :
Voici la ligne de conduite à suivre : Si un client peut raisonnablement de se remettre d'une exception, faites-en une exception vérifiée. Si client ne peut rien faire pour se remettre de l'exception, faites-en une exception exception non vérifiée.
Les exceptions du temps d'exécution représentent des problèmes qui sont le résultat d'une problème de programmation et, en tant que tel, on ne peut raisonnablement attendre du code client de l'API qu'il les récupère ou les traite de quelque manière que ce soit.
Les RuntimeExceptions sont comme des "exceptions par utilisation invalide d'une api" ; exemples d'exceptions runtime : IllegalStateException, NegativeArraySizeException, NullpointerException
Avec les exceptions, vous devez les attraper explicitement car vous pouvez toujours faire quelque chose pour les récupérer. Voici quelques exemples d'exceptions : IOException, TimeoutException, PrintException...
En d'autres termes, si votre client/utilisateur peut se remettre de l'exception, faites-en une priorité. Vérifié Exception Si votre client ne peut rien faire pour se remettre de l'exception, alors faites en sorte qu'elle soit Non vérifié RuntimeException . Par exemple, une RuntimeException serait une erreur de programmation, comme la division par zéro, aucun utilisateur ne peut y faire quoi que ce soit à part le programmeur lui-même, il s'agit alors d'une RuntimeException .
RuntimeException est une classe enfant de la classe Exception
C'est l'une des nombreuses classes enfant de la classe Exception. RuntimeException est la superclasse des exceptions qui peuvent être lancées pendant le fonctionnement normal de la machine virtuelle Java. Une méthode n'est pas tenue de déclarer dans sa clause throws les sous-classes de RuntimeException qui pourraient être lancées au cours de l'exécution de la méthode mais qui ne sont pas capturées.
La hiérarchie est
java.lang.Object
---java.lang.Throwable
-------java.lang.Exception
-------------java.lang.RuntimeException
Les exceptions sont un bon moyen de gérer les événements inattendus dans le flux de votre application. Les RuntimeException ne sont pas vérifiées par le compilateur, mais vous pouvez préférer utiliser des exceptions qui étendent la classe Exception pour contrôler le comportement de vos clients api, car ils doivent attraper les erreurs pour qu'ils puissent compiler. Forme également une bonne documentation.
Si vous voulez obtenir une interface propre, utilisez l'héritage pour sous-classer les différents types d'exception de votre application, puis exposez l'exception parent.