Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.1k views
in Technique[技术] by (71.8m points)

java中关于异常的不解?

例子:

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()方法的异常接口**”不太符合啊?


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

1 Reply

0 votes
by (71.8m points)

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

Just Browsing Browsing

[2] html - How to create even cell spacing within a

1.4m articles

1.4m replys

5 comments

57.0k users

...