Java Exception Handling을 처음 학습 할 때 부모-아들 예외의 처리에 대한 몇 문장을 기억합니다. "아동 수업 방법은 부모 수업 방법에 의해 발생하는 예외 또는 자식 예외 만 던질 수 있으며, 아동 클래스 생성자는 부모의 예외 또는 부모 예외를 제외해야합니다." 그 당시 나는 왜 서브 클래스 방법이 이와 같은 예외를 던져야하는지 몰랐습니다. 나중에, "Java의 생각"을 배우면서 나는 진실을 이해했습니다. 이제 검토하겠습니다.
1. 서브 클래스 방법은 부모 계급 방법이나 자녀 예외 만 예외만을 제외 할 수 있습니다.
이 제한을 위해 주로 서브 클래스가 상향 변환을 겪을 때 예외를 올바르게 포착 할 수 없기 때문입니다.
PACKED THINKINGINJAVA; 공개 추상 클래스 inningDemo1 {public void walk () 던지기 바이즈 Xception {} 공개 초록 void sing () 던지 PACKED THINKINGINJAVA; 공개 인터페이스 기타 기능 {public void task ()는 runtimeexception을 던졌습니다.} Package ThinkingInjava; Public Class SubinningDemo1은 InningDemo1을 구현합니다. {// 서브 클래스 메소드는 부모 클래스 메소드 @override public void walk ()를 제외 할 수 있습니다. {} // 그러나 부모 클래스에있는 예외는 예외적 인 예외가 될 수 없을 것입니다. 부모 클래스 방법 @override public void sing ()의 자식 예외는 subexception1 {} // 상위 클래스의 구현 된 인터페이스와 메소드에 예외가있는 경우 공개 void task () {}} 예외를 던지지 않도록 선택할 수 있습니다.이 예제를 예로 들어보십시오. 서브 클래스 공개 void walk () 에이 메소드가 CupException {}를 던지는 경우, 상위 클래스 메소드가없는 예외가 발생합니다. 우리는 부모 수업의 참조를 사용하여 아동 수업을 가리 킵니다.
public void f () {inningdemo1 inn = new subinningdemo1 (); inn.walk (); // 부모 클래스가 walk () 메소드를 호출 할 때 컵 exception을 던질 것이라는 것을 알지 못하므로 f () 메소드는 예외를 포착하는 방법을 모릅니다. 따라서 컴파일 기간 동안 서브 클래스 방법은 예외를 무작위로 던지지 않아야합니다. }위의 예에서 서브 클래스 메소드가 예외를 던질 수 없음을 알 수 있습니다.
2. 서브 클래스 생성자는 예외 또는 부모 예외를 던져야합니다.
이는 서브 클래스 생성자가 기본적으로 부모 클래스 생성자에 추가되기 때문입니다.
패키지 사고 사고
PACKING THINGINGINJAVA; PUBLIC CLASS SUBINNINGDEMO2는 InningDEMO2 {public subinningDemo2 ()가 fatherexception {// 부모 클래스의 생성자가 서브 클래스 생성자에 기본적으로 추가되므로, 부모 클래스 또는 상위 예외의 예외를 제외해야합니다 // super (); }}3. 비정상적인 손실
1. 마지막으로 예외를 던지면 예외가 손실 될 수 있습니다.
package thinkad } 마침내 {// 이전 예외를 덮으십시오. }} catch (예외 e) {System.out.println (e); }}} class redexception 확장 예외 {} class BlueException 확장 예외 {}실행 결과 : ThinkadingInjava.BlueException
2. 리턴을 사용하여 마지막으로, 예외는 발생하지 않습니다
package thinkad } 마침내 {return; }}}우리는 그것이 예외를 던지는 것을 보았지만 실행할 때는 출력이 없습니다.
위의 기사에서는 Java Exception Handling (아버지-아들 예외 처리)이 내가 공유하는 모든 내용입니다. 나는 그것이 당신에게 참조를 줄 수 있기를 바랍니다. 그리고 당신이 wulin.com을 더 지원할 수 있기를 바랍니다.