java重写exception_java方法重写中声明异常的原则

子类声明异常的范围不能超过父类声明的范围:

1. 父类没有声明异常,子类也不能;

2.不可以抛出原有方法抛出异常类的父类或者上层类

3.抛出的异常类型数目不可以比原有方法抛出的还多

例如:

import java.io.FileNotFoundException;

import java.io.IOException;

import java.text.ParseException;

import java.time.format.DateTimeParseException;

import java.util.zip.DataFormatException;

public class A {

public void s() throws IOException{ }

}

class B extends A{

public void s() throws FileNotFoundException{ }

}

class C extends A{

public void s(){ }

}

class D extends A{

public void s() throws IOException,FileNotFoundException{ }

}

class E extends A{

public void s() throws IOException,ArithmeticException,DateTimeParseException{ }

}

class F extends A{

public void s() throws Exception{ }//拋出了父类抛出异常类的父类,错误

}

class G extends A{

public void s() throws IOException,DataFormatExceptionException{ }

//错误,因为DataFormatExceptionException的父类也是Exception,所以超出了范围

}

---------------------

子类声明异常的范围不能超过父类声明的范围: 1. 父类没有声明异常,子类也不能; 2.不可以抛出原有方法抛出异常类的父类或者上层类 3.抛出的异常类型数目不可以比原有方法抛出的还多 例如: import java.io.FileNotFoundException; import java.io.IOException; import java.text.ParseException; import java.time.format.DateTimeParseException; import java.util.zip.DataFormatException; public class A { public void s() throws IOException{ } } class B extends A{ public void s() throws FileNotFoundException{ } } class C extends A{ public void s(){ } } class D extends A{ public void s() throws IOException,FileNotFoundException{ } } class E extends A{ public void s() throws IOException,ArithmeticException,DateTimeParseException{ } } class F extends A{ public void s() throws Exception{ }//拋出了父类抛出异常类的父类,错误 } class G extends A{ public void s() throws IOException,DataFormatExceptionException{ } //错误,因为DataFormatExceptionException的父类也是Exception,所以超出了范围 } ---------------------
经验分享 程序员 微信小程序 职场和发展