Welcome to 16892 Developer Community-Open, Learning,Share
menu search
person

Categories

例子:

class Exception1 extends Exception {
}

class Exception2 extends Exception {
}

class One {
    public void test() throws Exception1 {
    }
}

interface Two {
    public void test() throws Exception2;
}

public class TestException extends One implements Two {
    @Override
    public void test() {
    }
}

java编程思想中关于上面解释:
Two接口定义的方法test()。这个方法相比类One的test()方法抛出新的异常Exception2,如果TestException类在扩展One类的同时又实现了Two接口,那么Two接口里的test()方法就不能改变在One中的
test()方法的异常接口。否则的话,在使用基类的时候就不能判断是否捕获了正确的异常,所以这也很合理。
疑惑:
我上面在TestException类中定义了一个新的test()方法,整体代码也无报错,现在接口Two不是在原来One基础上改变了抛出的异常接口,与java编程思想所说“**那么Two接口里的test()方法就不能改变在One中的
test()方法的异常接口**”不太符合啊?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
239 views
Welcome To Ask or Share your Answers For Others

1 Answer

override的方法不可以抛更大的异常,可以抛更小的异常,也可以不抛异常


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to 16892 Developer Community-Open, Learning and Share

548k questions

547k answers

4 comments

32.8k users

...