Quando eu estava aprendendo o manuseio de exceções de Java, lembro-me de algumas frases sobre o manuseio das exceções de pais e filho: "Um método de classe infantil só pode lançar exceções ou exceções filhos lançadas pelo método da classe pai, e o construtor de classe infantil deve lançar exceções ou exceções pais do construtor de classe pai". Naquela época, eu não sabia por que o método da subclasse tinha que lançar exceções como essa. Mais tarde, aprendendo "Pensando em Java", entendi a verdade. Agora vou revisá -lo.
1. Os métodos de subclasse só podem lançar exceções dos métodos da classe pai ou de suas exceções filhos.
Para essa limitação, é principalmente porque as subclasses não podem capturar exceções corretamente quando estão passando por uma transformação ascendente
pacote pensioninjava; public abstract classe innningDemo1 {public void walk () lança bashexception {} public abstrate void sing () lança baseexception;} classe Baseexception estende a exceção {} classe Subexception1 estende a base {} classe cupException estende a exceção {} pacote thinkinginjava; interface pública OUTRAFUNCIONAL {public void Task () lança RUNTimeException;} package thinkinginjava;public class SubInningDemo1 extends InningDemo1 implements OtherFunction{ //Subclass methods can throw exceptions of parent class method @Override public void walk() throws BaseException{} //But exceptions that are not in the parent class cannot be thrown, otherwise there will be an error in compilation //public void walk() throws Exception{} //Subclass methods can Jogue as exceções da criança do método da classe pai @Override public void Sing () lança Subexception1 {} // Quando a interface e os métodos implementados na classe pai tiverem exceções, você pode optar por não lançar exceções Task Public void () {}}Tome este exemplo como exemplo. Se houver esse método na subclasse public void Walk () lança CupException {}, uma exceção que o método da classe pai não possui é lançado. Utilizamos a referência da classe pai para apontar para a classe infantil.
public void f () {innningDemo1 inn = new SubInningDemo1 (); inn.walk (); // Quando a classe pai chama o método Walk (), não sabe que ele jogará uma cupException, para que o método f () não saiba como pegar a exceção. Portanto, durante o período de compilação, os métodos de subclasse devem ser impedidos de lançar exceções aleatoriamente. }A partir do exemplo acima, também podemos ver que o método da subclasse não pode lançar exceções
2. O construtor da subclasse deve lançar uma exceção ou sua exceção dos pais.
Isso ocorre porque o construtor de subclasse é adicionado por padrão ao construtor da classe pai.
pacote pensioninjava; public abstract class innningDemo2 {public innningDemo2 () lança Subexception {}} classe Fatherexception estende a exceção {} classe Subexception estende a faterexception {} classe Penexception estende a exceção {} pacote thinkinginjava; classe pública SubinningDemo2 estende a innningDemo2 {public SubinningDemo2 () lança Fatherexception {// O construtor da classe pai é adicionado por padrão no construtor de subclasse; }}3. Perda anormal
1. Faça uma exceção finalmente, a exceção lançada pode ser perdida.
pacote thinkingInjava; public class Finalmente {public static void main (string [] args) {try {try {throw new RedException (); } finalmente {// abrange a exceção anterior lançar new blueException (); }} catch (Exceção e) {System.out.println (e); }}} classe RedException estende a exceção {} classe BlueException estende a exceção {}Resultado em execução: Thinkinjava.BlueException
2. Use o retorno finalmente, nenhuma exceção é lançada
pacote thinkinginjava; public class ReturnException {public static void main (string [] args) {try {throw new excepção (); } finalmente {return; }}}Vemos que ele lança uma exceção, mas não haverá saída ao executar
O artigo acima discute brevemente o manuseio de exceção do Java (manuseio de exceção de pai e filho) é todo o conteúdo que compartilho com você. Espero que possa lhe dar uma referência e espero que você possa apoiar mais o wulin.com.