阅读(3624) (4)

鸿蒙OS AutoCloseable

2022-04-28 15:48:15 更新

AutoCloseable

public interface AutoCloseable

一个在关闭之前可能持有资源(例如文件或套接字句柄)的对象。 AutoCloseable 对象的 close() 方法在退出资源规范标头中已为其声明对象的 try-with-resources 块时自动调用。 这种构造确保了及时释放,避免了资源耗尽异常和错误,否则可能会发生。

方法总结

修饰符和类型 方法 描述
void close() 关闭此资源,放弃任何基础资源。

方法详情

close

void close() throws Exception

关闭此资源,放弃任何基础资源。此方法在由 try-with-resources 语句管理的对象上自动调用。

虽然此接口方法被声明为抛出异常,但强烈建议实现者声明 close 方法的具体实现以抛出更具体的异常,或者如果关闭操作不会失败,则根本不抛出异常。

关闭操作可能失败的情况需要实施者仔细注意。强烈建议在抛出异常之前放弃底层资源并在内部将资源标记为已关闭。 close 方法不太可能被多次调用,因此可以确保及时释放资源。此外,它减少了资源包装或被另一个资源包装时可能出现的问题。

强烈建议此接口的实现者不要让 close 方法抛出 InterruptedException。此异常与线程的中断状态交互,如果 InterruptedException 为 Throwable#addSuppressed,则可能发生运行时错误行为。更一般地说,如果抑制异常会导致问题,则 AutoCloseable.close 方法不应抛出它。

请注意,与 Closeable 的 close 方法不同,此 close 方法不需要是幂等的。换句话说,多次调用此 close 方法可能会产生一些可见的副作用,这与 Closeable.close 不同,如果多次调用则要求无效。但是,强烈建议此接口的实现者使他们的 close 方法具有幂等性。

Throws:

Throw名称 Throw描述
Exception 如果无法关闭此资源