Lorsque j'ai appris la gestion des exceptions Java pour la première fois, je me souviens de quelques phrases sur la gestion des exceptions parent-son: "Une méthode de classe d'enfants ne peut que lancer des exceptions ou des exceptions d'enfants lancées par la méthode de la classe parent, et le constructeur de classe enfant doit lancer des exceptions ou des exceptions parentales du constructeur de la classe parent." À cette époque, je ne savais pas pourquoi la méthode de la sous-classe devait lancer des exceptions comme celle-ci. Plus tard, en apprenant "pensant en Java", j'ai compris la vérité. Maintenant, je vais le passer en revue.
1. Les méthodes de sous-classe ne peuvent lancer que des exceptions de méthodes de classe parent ou de leurs exceptions d'enfants.
Pour cette limitation, c'est principalement parce que les sous-classes ne peuvent pas prendre correctement les exceptions lorsqu'ils subissent une transformation vers le haut
Package ThinkingInjava; public abstrait class InningDemo1 {public void walk () lève BasEException {} public abstract void sing () lève laxception;} classe Baseexception étend une exception {} class subexception1 étend BasEException {} class CupException étend une exception {} Package ThinkInjava; Interface publique AutreFunction {public void task () lève RuntimeException;} Package ThinkingInjava; public class SubinningDemo1 étend InningDemo1 implémente d'autres fonctionnalités {// Les méthodes de sous-classe peuvent lancer des exceptions de la méthode de la classe parent @Override public void walk () lance BasEException {} // mais les exceptions qui ne sont pas dans la classe parent Exceptions de la méthode de la classe parent @Override public void sing () lève subexception1 {} // Lorsque l'interface implémentée et les méthodes de la classe parent ont des exceptions, vous pouvez choisir de ne pas lancer des exceptions publics void task () {}}Prenez cet exemple comme exemple. S'il y a cette méthode dans la sous-classe publique void walk () lance CupException {}, une exception que la méthode de la classe parent n'a pas est lancée. Nous utilisons la référence de la classe parent pour pointer vers la classe infantile.
public void f () {inningDemo1 inn = new SubinningDemo1 (); inn.walk (); // Lorsque la classe parent appelle la méthode Walk (), il ne sait pas qu'il lancera une CupException, de sorte que la méthode f () ne sait pas comment attraper l'exception. Par conséquent, pendant la période de compilation, les méthodes de sous-classe doivent être empêchées de lancer des exceptions au hasard. }D'après l'exemple ci-dessus, nous pouvons également voir que la méthode de sous-classe ne peut pas lancer des exceptions
2. Le constructeur de sous-classe doit lancer une exception ou son exception parent.
En effet, le constructeur de sous-classe est ajouté par défaut au constructeur de classe parent.
Package ThinkingInjava; public abstract class InningDemo2 {public InningDemo2 () lève la sous-exception {}} class Fatherexception étend l'exception {} la classe Sous-exception étend Fatherexception {} class penexception étend une exception {} Package ThinkingInjava; public class SubinningDemo2 étend InningDemo2 {public subinningdemo2 () lève FatheRexception {// Le constructeur de la classe parent est ajouté par défaut dans le constructeur de sous-classe, donc une exception de la classe parent ou de son exception parent doit être jetée // super (); }}3. Perte anormale
1. Jetez une exception enfin, l'exception lancée peut être perdue.
Package ThinkInjava; public class finalException {public static void main (String [] args) {try {try {throw new redexception (); } Enfin {// Couvrir l'exception précédente Throw New BlueException (); }} catch (exception e) {System.out.println (e); }}} Classe La redexception étend l'exception {} classe BlueException étend l'exception {}Résultat de course: ThinkingInjava.BlueException
2. Utilisez le retour enfin, aucune exception n'est lancée
Package ThinkInjava; public class returnException {public static void main (String [] args) {try {throw new exception (); } enfin {return; }}}Nous voyons qu'il lance une exception, mais il n'y aura pas de sortie lors de l'exécution
L'article ci-dessus discute brièvement de la manipulation des exceptions Java (Pather-Son Exception Manuling) est tout le contenu que je partage avec vous. J'espère que cela pourra vous donner une référence et j'espère que vous pourrez soutenir Wulin.com plus.