java – Declare-and-throw与throw-without-is-declared异常

前端之家收集整理的这篇文章主要介绍了java – Declare-and-throw与throw-without-is-declared异常前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Java中,双重方法有什么区别?
public void methodA() throws AnException {
    //do something
    throw new AnException();
}

public void methodA() {
    //do the same thing
    throw new AnException();
}

我有一个直觉,它与一个精心设计的方法有关(因为我将methodA放在一个接口中,它被声明为methodA *在实现中的方式,并从Java接收到一个警告,“A *不能覆盖A,因为A *不抛出异常“).

这个猜测是否正确?

两种做事方式有其他微妙的内涵吗?

解决方法

如果AnException是被检查的异常(换句话说,如果它不扩展RuntimeException),那么methodA将不会被编译.检查的异常必须始终被拒绝.

如果AnException是一个未经检查的异常(如果扩展了RuntimeException),那么可以由java编译器允许,也可以由java运行时等效地解释.在这种情况下,方法A仍然可能仍然是首选,因为文档的原因.您的方法的javadoc将显示它可能会抛出AnException.让你的方法用户知道他们应该期望的异常是很好的.

猜你在找的Java相关文章