java - AutoCloseable.close()方法是否违反了Java的向后兼容性规则

标签 java java-7 try-with-resources autocloseable

从 Java 7 开始,Closeable接口(interface)已 retrofit 扩展AutoCloseable接口(interface),以便所有类实现 Closeable接口(interface)可与 try-with-resources 配合使用陈述。到目前为止,Closeable 接口(interface)可以随意抛出任何异常,包括 InterrrruptedException。 然而,对于 Java 7 try-with-resources 中使用的 Closeable 接口(interface)的任何实例当退出 try block 及其 InterruptedException 后自动调用 close 方法时,语句可能会抛出 InterruptedException可能会被隐式调用 Throwable.addSuppressed(InterruptedException); 抑制

考虑到有人可能会在不知不觉中抑制异常并且程序没有按应有的行为,这是否违反了 Java 的向后兼容性规则

最佳答案

不,这不会破坏向后兼容性。 “try-with-resources”特性是 Java 7 中的新特性;旧代码无法调用它。任何依赖于捕获 close 引发的异常的旧代码仍将使用普通的“try-catch” block ,并且异常不会被抑制,因为它不会使用“try-与资源”。由于抑制,这样的 block 将无法转换为“try-with-resources”,但它仍然会按原样工作。

关于java - AutoCloseable.close()方法是否违反了Java的向后兼容性规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25190347/

相关文章:

java - 错误的资源泄漏警告?

java - 更改 JSlider 的可显示标签?

Java 用另一个子字符串(值)替换子字符串(模式)问题

java - 内部类共享属性信息

java - 如何强制 AutoClosable 警告传播到 Java 类的调用者?

java - 试用资源关闭订单

Java while 循环 boolean 求值

java - Java日期强制BST“时区”

java - 自 Java 7 以来,JFileChooser 对按回车键没有反应

java - 无法启动java web启动