Closeable接口的Do close()方法在签名中有异常



我第一次阅读Closeable和AutoCloseable接口。根据我的理解,除了Closeable接口的关闭方法的IOException之外,我们不能抛出任何异常,我们可以抛出任何可能的异常,比如IllegalStateException,只抛出AutoCloseable接口。但我们可以说Closeable方法的close((方法在签名中有异常吗。

AutoCloseable接口定义close方法如下:

void close() throws Exception

而Closeable接口中的close,它扩展了AutoCloseable,定义如下:

void close() throws IOException

因此,在后一种情况下,您只能抛出IOException或从其扩展的任何异常。

请注意,您总是可以抛出任何(未检查的(运行时异常,如IllegalStateException,而与方法签名上定义的异常无关。

您是否试图询问Closable.close()在方法签名中是否有异常?

是的,您可以在这里查看文档:Closeable.close()。它抛出IOException

void close() throws Exception 

根据文档,Closeable扩展了AutoCloseable。我们使用它专门用于IO流。因此它抛出CCD_ 10而不是CCD_。

来自AutoCloseable.close():

虽然此接口方法被声明为抛出Exception,但强烈鼓励实现者声明关闭方法的具体实现以抛出更具体的异常,或者如果关闭操作不能失败,则完全不抛出异常。

最新更新