2 votes

Définition de la classe d'exception

J'ai ouvert Exception sous-classe comme NullpointerException elle avait des constructeurs et aucune autre méthode. Comment la JVM sait-elle dans quels cas une telle exception doit être affichée ?

5voto

Matthias Huttar Points 1121

Il existe quelques exceptions que la JVM lève automatiquement dans des situations spécifiques. Les exceptions NullPointerException et OutOfMemoryError en font partie.

Parce que sun/oracle a défini leur but exact, la logique pour savoir quand les lancer est codée dans la JVM elle-même. (Par exemple, si votre application nécessite plus de mémoire que celle qui est disponible, la JVM sait qu'elle doit lancer une OutOfMemoryError ; si vous essayez d'accéder à un champ ou à une méthode d'un objet nul, elle sait qu'elle doit lancer une NullPoinerException).

Ces règles sont clairement spécifiées et codifiées dans la JVM.

Dans ce cas, elles diffèrent de toute exception "personnalisée" que vous créeriez pour votre propre usage. Évidemment, la JVM ne connaît pas leur sémantique et ne les lèvera jamais automatiquement. C'est vous qui devez les lancer vous-même.

BTW : au cas où vous vous demanderiez pourquoi vous n'avez pas besoin de blocs try/catch pour les NullPointerException : c'est parce qu'elles héritent de RuntimeException. Par définition, toute exception héritant de RuntimeException n'a pas besoin d'être déclarée ou attrapé explicitement. (Vous pouvez les déclarer et les attraper explicitement, mais c'est facultatif).

J'espère que cela vous aidera :) Matthias

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