gpt4 book ai didi

java - 为什么java.lang.AutoCloseable 的close 方法抛出Exception,而java.io.Closeable 的close 方法抛出IOException?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:00:22 26 4
gpt4 key购买 nike

我正在读这个link对于 try-with-resources 它说:

The close method of the Closeable interface throws exceptions of type IOException while the close method of the AutoCloseable interface throws exceptions of type Exception.

但是为什么? 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com