如果我们谈论带有异常处理的方法重写, 则有很多规则。规则如下:如果超类方法未声明异常如果超类方法未声明异常, 则子类重写方法无法声明已检查的异常, 但可以声明未检查的异常。如果超类方法声明异常如果超类方法声明异常, 则子类重写方法可以声明相同, 子类异常或不声明异常, 但不能声明父级异常。 |
1)规则:如果超类方法未声明异常, 则子类重写方法无法声明已检查的异常。
import java.io.*;
class Parent{
void msg(){System.out.println("parent");
}
}class TestExceptionChild extends Parent{
void msg()throws IOException{
System.out.println("TestExceptionChild");
}
public static void main(String args[]){
Parent p=new TestExceptionChild();
p.msg();
}
}
立即测试
Output:Compile Time Error
2)规则:如果超类方法未声明异常, 则子类重写方法无法声明已检查的异常, 但可以声明未检查的异常。
import java.io.*;
class Parent{
void msg(){System.out.println("parent");
}
}class TestExceptionChild1 extends Parent{
void msg()throws ArithmeticException{
System.out.println("child");
}
public static void main(String args[]){
Parent p=new TestExceptionChild1();
p.msg();
}
}
立即测试
Output:child
如果超类方法声明异常
1)规则:如果超类方法声明异常, 则子类重写方法可以声明相同, 子类异常或无异常, 但不能声明父异常。子类重写方法声明父异常的示例
import java.io.*;
class Parent{
void msg()throws ArithmeticException{System.out.println("parent");
}
}class TestExceptionChild2 extends Parent{
void msg()throws Exception{System.out.println("child");
}public static void main(String args[]){
Parent p=new TestExceptionChild2();
try{
p.msg();
}catch(Exception e){}
}
}
立即测试
Output:Compile Time Error
子类重写方法声明相同异常的示例
import java.io.*;
class Parent{
void msg()throws Exception{System.out.println("parent");
}
}class TestExceptionChild3 extends Parent{
void msg()throws Exception{System.out.println("child");
}public static void main(String args[]){
Parent p=new TestExceptionChild3();
try{
p.msg();
}catch(Exception e){}
}
}
立即测试
Output:child
子类重写方法声明子类异常的示例
import java.io.*;
class Parent{
void msg()throws Exception{System.out.println("parent");
}
}class TestExceptionChild4 extends Parent{
void msg()throws ArithmeticException{System.out.println("child");
}public static void main(String args[]){
Parent p=new TestExceptionChild4();
try{
p.msg();
}catch(Exception e){}
}
}
立即测试
Output:child
子类重写方法未声明异常的示例
import java.io.*;
class Parent{
void msg()throws Exception{System.out.println("parent");
}
}class TestExceptionChild5 extends Parent{
void msg(){System.out.println("child");
}public static void main(String args[]){
Parent p=new TestExceptionChild5();
try{
p.msg();
}catch(Exception e){}
}
}
【Java中方法重写的异常处理】立即测试
Output:child
推荐阅读
- Java异常传播
- 如何修复显示器屏幕变黑几秒钟(解决办法指南)
- esentutl.exe提示和指南(它是什么、用途、命令行)
- 什么是WD Discovery.exe(安全还是病毒、用途以及如何删除)
- 学习语言的20大Duolingo替代方案(最佳语言学习软件)
- Findstr.exe提示和指南(它是什么,用途,命令行)
- Wevtutil.exe进程指南(它是什么&命令行介绍)
- 什么是bash.exe、用途、安全还是病毒()
- WinThruster.exe指南(使用、安全或病毒以及如何删除它())