scjp异常:
方法重写,抛出异常
在子类中一个重写的方法可能只抛出父类中声明过的异常或者异常的子类。这只适用于
方法重写而不适用于方法重载。所以如果如果一个方法有完全相同的名称和参数,它只能抛
出父类中声明过的异常或者异常的子类。但是它抛出很少或者不抛出异常。所以下面的例子
将不被编译
import java.io.*;
class Base{
public static void amethod()throws FileNotFoundException{}
}
public class ExcepDemo extends Base{
//Will not compile, exception not in base version of method
public static void amethod()throws IOException{}
}
如果在父类中有抛出IOException 异常的方法, 在子类中的方法抛出
FileNotFoundException,代码将编译通过。再次,记住只适用于方法重写,在方法重载中没
有类似规定。一个在子类中重写的方法可能会抛出异常。
完全不知道老外再说什么,大家指点!!!!!
------解决方法--------------------------------------------------------
java类的方法重写时规定子类方法重写不能抛出超越父类方法定义的异常类的范围
------解决方法--------------------------------------------------------
就是说子类的异常是继承自父类的异常是正确的,比如FileNotFoundException这个是IOException的子类,所以可以编译,如果反过来就不对了。
------解决方法--------------------------------------------------------
子类不能比父类抛出更多的异常.
PS:你还是看英文的吧.中文翻译有些难以理解.
------解决方法--------------------------------------------------------
继承时 子类方法抛出的异常类型只能是和父类一样或者是父类方法异常类型的子类