首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AutoCloseable.close()方法是否破坏了Java的向后兼容规则

AutoCloseable.close()方法是否破坏了Java的向后兼容规则
EN

Stack Overflow用户
提问于 2014-08-07 19:11:30
回答 1查看 539关注 0票数 0

从Java7开始,对Closeable接口进行了改进,以扩展AutoCloseable接口,以便实现Closeable接口的所有类都可以使用try-with-resources语句。到目前为止,可关闭的接口可以随意抛出任何异常,包括InterrruptedException。但是,使用Java 7时,在try-with-resources语句中使用的任何可关闭接口实例都可能在退出try块之后自动调用close方法时抛出InterruptedException,并且它的InterruptedException可能因隐式调用Throwable.addSuppressed(InterruptedException);而受到抑制。

因此,这是否破坏了Java的向后兼容性规则,考虑到某些人可能在不知不觉中抑制了它的异常,并且编程不像它应该做的那样

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-07 19:18:20

不,这不会破坏向后兼容性。在Java 7中,“使用资源的尝试”特性是新的;旧代码不能调用它。任何依赖于捕获close抛出的异常的旧代码仍将使用一个普通的“尝试-捕捉”块,并且该异常不会被抑制,因为它不会使用“使用资源的尝试”。由于抑制,这样的块将无法转换为“使用资源的尝试”,但是它仍然可以正常工作。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25190347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档