295 votes

Différence entre java.lang.RuntimeException et java.lang.Exception

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 ?

16voto

Mahdi Esmaeili Points 86

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.

8voto

iberck Points 785

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...

6voto

Joe Almore Points 324

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 .

4voto

jayrhd Points 11

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

0voto

F.O.O Points 29

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X