当前位置:  开发笔记 > 编程语言 > 正文

声明 - 抛出与抛出 - 没有被声明的异常

如何解决《声明-抛出与抛出-没有被声明的异常》经验,为你挑选了1个好方法。

在Java中,双胞胎方法有什么区别?

public void methodA() throws AnException {
    //do something
    throw new AnException();
}

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

我有一个直觉,它与设计良好的方法有关(因为我将methodA放在一个接口中,声明它就像方法A*在其实现中所做的那样,并从Java收到警告"A*不能覆盖A因为A*不会抛出AnException").

这种猜测是否正确?

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



1> 小智..:

如果AnException是一个已检查的异常(换句话说,如果它没有扩展RuntimeException),那么methodA将不会编译.必须始终对已检查的异常进行分解.

如果AnException是未经检查的异常(如果它确实扩展了RuntimeException),那么java编译器将允许其中任何一个,并且java运行时将对其进行等效解释.出于文档的原因,在这种情况下,methodA仍然可能仍然是首选.您的方法的javadoc将显示它可能会抛出AnException.让您的方法的用户知道他们应该期待什么样的例外是很好的.

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有