例一,当类B继承类A时:
class A{
public void show() throws FileNotFoundException{
BufferedInputStream in=new BufferedInputStream(new FileInputStream("ad.dat"));
}
}
class B extends A{
public void show() throws FileNotFoundException, SQLException{
BufferedInputStream in=new BufferedInputStream(new FileInputStream("ad.dat"));
Connection conn=JdbcUtils.getConnection();
}
}
编译时会提示错误,原因,B中的show方法抛出的异常中SQLException在其父类A中并没有抛出
例二,当类D实现接口C时:
interface C{
void disply();
}
class D implements C{
public void disply() throws FileNotFoundException{
BufferedInputStream in=new BufferedInputStream(new FileInputStream("ad.dat"));
}
}
编译时同样会提示错误,原因是D中的display方法抛出了FileNotFoundException异常,而在其实现的接口C中声明的display方法没有抛出任何异常。
总结:
某个类实现了一个接口或继承了一个类,当该类进行方法覆盖时,抛出的异常只能是原方法的异常或者是原方法异常的子集。