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 ?
Réponse
Trop de publicités?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