- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在读这个link对于 try-with-resources
它说:
The close method of the
Closeable
interface throws exceptions of typeIOException
while the close method of theAutoCloseable
interface throws exceptions of typeException
.
但是为什么? AutoCloseable
的关闭方法也可能抛出 IOException
是否有任何示例支持 AutoCloseable
的关闭方法必须抛出类型为 的异常异常
最佳答案
AutoClosable
接口(interface)位于 java.lang
中,旨在应用于需要“自动”关闭的任何资源 (try-with-resources)。 AutoClosable
不能是与 io 相关的资源。因此接口(interface)不能对具体异常做出任何假设。
另一方面,Closable
位于 java.io
并扩展了 AutoClosable
,因为 Closable
是用于 io 资源的 AutoClosable
。因此它声明 IOException
可以在关闭时抛出。
例如... java.sql.Connection
是一个 AutoClosable
因为它的关闭方法会抛出 SQLException
和一个 SQLException
不是 IOException
。考虑内存中的 DB,关闭 sql 连接一定不能抛出 IOException
。
编辑
answered one more doubt i.e. why AutoClosable is kept under java.lang package. Thanks.
我认为它位于 java.lang
因为 try-with-resources在 Java 1.7 中作为语言特性引入。因此 java.lang
关于java - 为什么java.lang.AutoCloseable 的close 方法抛出Exception,而java.io.Closeable 的close 方法抛出IOException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25959779/
我是 selenium 的新手。我在使用 Selenium WebDriver 时遇到了一些问题。 我想使用 Selenium WebDriver 打开网站,例如 www.filpkart.com 我
在阅读一些 Java 源代码时,我遇到了这一行: ((Closeable) some_obj).close(); some_obj 显然是一个实现了 Closeable 接口(interface)的类
我最近查看了 jdk 1.8 的 src.zip 文件,发现了一些很奇怪的东西。 public interface Closeable extends AutoCloseable 既然AutoClos
我是单元测试的新手。 我应该如何为这个方法编写 JUnit 测试? public static void close(Closeable closeable) { if (closea
我问了this question yesterday .我想我得到了正确的答案,但其他答案之一给我留下了一个问题。如果我有这样的代码: File file = new File("somefile.t
我已经实现了自己的可关闭 JTabbedPane(基本上遵循了 here 的建议 - 通过扩展 JTabbedPane 并覆盖一些方法并调用 setTabComponentAt(...))。它完美地工
我想扩展选项卡控件以具有可关闭的选项卡项目。 我找到了 Kent 的这个 WPF 解决方案: On the WPF TabControl - can I add content next to the
我的整个系统有一个静态 HashMap,其中包含一些对象的引用;我们称之为myHash 。这些对象仅在我需要它们时才会实例化,例如 private static HashMap directories
我不明白。例如我们在代码中有一个 OutputStream 类型的变量,当我们停止使用它时我们应该调用它的 close() ,为什么它没有以这种方式实现:GC 在清理时调用 close() 本身这个变
有时我必须编写将自己注册为其他对象的监听器的对象。良好的编程实践表明我们应该始终注销此类监听器。通过使类实现 Closeable 并在 close() 中注销监听器来尝试强制执行此类行为是一种好习惯吗
我正在学习 Java,我找不到关于 implements Closeable 和 implements AutoCloseable 接口(interface)的任何好的解释。 当我实现 interfa
我有一个 Map如果从 map 中删除了一个键,我想关闭 Closeable .通常我有这样的东西: Closeable c = map.remove(key); c.close(); 我的 Ecli
有人可以向我解释这里发生了什么以及顺序是什么吗?。输出对我来说没有任何意义。 输出为 T 1 IOE F。 代码是: import java.io.Closeable; import java.io.
在 Android 应用中,我将此代码添加到 onCreate() Closeable sss = new Socket(); if (!(sss instanceof Closeab
我想知道为什么我会在新的 eclipse Juno 上收到这个警告,尽管我认为我正确地关闭了所有内容。您能告诉我为什么我会在以下代码中收到此警告吗? public static boolean cop
假设我们有两个 Closeable bean: @Component public class CloseableBean1 implements Closeable { private Bu
为什么他们要添加 AutoCloseable 并更改 Closeable 如下: public interface Closeable extends AutoCloseable { publ
我正在尝试创建一个管理多个 Closeable 资源的 Java 类。 C++ 解决方案简单明了,并且可以轻松扩展到更多资源: class composed_resource { resour
我遇到了类似于 this one 的问题,除了 java.util.Scanner。我有这个静态方法: public static void close(final Closeable c) {
当我运行我的 Android 应用程序时,出现以下错误: 10-12 16:46:44.719 2710-2719/? E/StrictMode: A resource was acquired at
我是一名优秀的程序员,十分优秀!