我第一次阅读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,但强烈鼓励实现者声明关闭方法的具体实现以抛出更具体的异常,或者如果关闭操作不能失败,则完全不抛出异常。