方法可以在不声明的情况下抛出java.lang.Exception吗?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了方法可以在不声明的情况下抛出java.lang.Exception吗?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1088字,纯文字阅读大概需要2分钟。
内容图文
此Java代码合法吗?显然,在不同的编译器上会得到不同的结果.
foo抛出异常而不声明它.
如果try块中的代码未声明抛出任何异常,那么我们知道到达catch块的任何Exception都是RuntimeException,因此实际上这是可以的.
但这似乎需要深入的静态代码分析,而对该方法的简单语法读取表明它是非法的.
能否请我参考语言规范的文章或部分?
public void foo() {// no throws clause
try {
// Lines of code
} catch (Exception e) {
throw e;
}
}
解决方法:
查看§11.2 Compile-Time Checking of Exceptions:
For each checked exception which is a possible result, the throws clause for the method or constructor must mention the class of that exception or one of the superclasses of the class of that exception (§11.2.3).
进一步的章节将详细介绍表达式和语句的异常分析.
如果您尝试使用以下代码:
try {
// Lines of code
} catch (Exception e) {
throw e;
}
它不会有效地引发任何检查的异常.在Eclipse中,它没有给我任何编译器错误.
但是,如果尝试以下操作:
try {
new URL("https://www.stackoverflow.com");
} catch (Exception e) {
throw e;
}
它可以抛出一个检查异常,并且它(或其超类)必须在throws中提及.这使我在Eclipse中出现“未处理的异常类型MalformedURLException”编译器错误.
内容总结
以上是互联网集市为您收集整理的方法可以在不声明的情况下抛出java.lang.Exception吗?全部内容,希望文章能够帮你解决方法可以在不声明的情况下抛出java.lang.Exception吗?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。