测试你对自动资源管理的掌握程度
try-with-resources语句是在Java 7中引入的重要特性,它提供了自动资源管理功能,确保资源在使用完毕后能够自动关闭。
要在try-with-resources中使用的资源必须实现AutoCloseable接口(或其子接口Closeable)。这个接口定义了close()方法,用于释放资源。
上述代码是正确的try-with-resources用法。FileInputStream会在try块结束时自动关闭,无需手动调用close()方法或使用finally块。
当try块和close()方法都抛出异常时,try块的异常是主异常,close()方法的异常会被添加到主异常的抑制异常列表中,可以通过getSuppressed()方法获取。
资源按照声明的相反顺序关闭,即最后声明的资源最先关闭。在这个例子中,关闭顺序是r3, r2, r1。
在try-with-resources中声明的资源变量只在try块内可见,不能在try块外访问。这是错误的说法。
AutoCloseable接口的close()方法声明为throws Exception,因此可以抛出Exception及其子类异常。而Closeable接口的close()方法只能抛出IOException。
当资源初始化失败时,该资源不会被添加到需要关闭的资源列表中,因此不会尝试关闭它。只有成功初始化的资源才会被自动关闭。
try-with-resources的主要优势是代码更简洁,自动管理资源释放,避免了手动编写finally块和资源关闭代码,减少了出错的可能性。
close()方法应该是幂等的,即多次调用应该是安全的,不会产生副作用。通常通过检查资源状态来避免重复关闭。
正确答案:0 / 10
错误答案:0 / 10
得分:0%