Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否存在不应在常规try块上使用try-with资源的实例?_Java_Oop_Try Catch_Try With Resources - Fatal编程技术网

Java 是否存在不应在常规try块上使用try-with资源的实例?

Java 是否存在不应在常规try块上使用try-with资源的实例?,java,oop,try-catch,try-with-resources,Java,Oop,Try Catch,Try With Resources,例如,如果需要在不同的对象中传递资源的实例,该怎么办 既然try-with-resource的设计合理地限制了其成员的范围,那么有人会如何处理这种设计问题呢 仍然使用try with资源并不断传递实例吗? 使用常规try-catch-finally块并将成员保持在其范围之外?来自文档: 资源是一个必须在程序完成后关闭的对象。try with resources语句确保在语句末尾关闭每个资源。任何实现java.lang.AutoCloseable的对象(包括实现java.io.Closeable的

例如,如果需要在不同的对象中传递资源的实例,该怎么办

既然try-with-resource的设计合理地限制了其成员的范围,那么有人会如何处理这种设计问题呢

仍然使用try with资源并不断传递实例吗? 使用常规try-catch-finally块并将成员保持在其范围之外?

来自文档: 资源是一个必须在程序完成后关闭的对象。try with resources语句确保在语句末尾关闭每个资源。任何实现java.lang.AutoCloseable的对象(包括实现java.io.Closeable的所有对象)都可以用作资源

如果你想要一个需要资源的设计,不要尝试使用资源,而是将资源放在外部,在简单的try-catch中使用。 但是如果你使用这个策略,一定要做必要的清理


此外,如果使用传统的try-catch,可能需要更频繁地编写嵌套的try-catch块。关闭资源也会引发异常,正如Ray所说,问题有点抽象。我想到了两种情况:

对资源的本地引用:使用try with resources 当然,您可以将资源传递给try块内的其他方法。 引用资源的成员变量:考虑实现自动关闭,以便类本身的实例可以在带有资源块的尝试中使用。
不应始终使用try with资源,并且在创建可关闭对象时必须使用该资源。即使您有一个传入的对象,这意味着调用方必须有一个try-catch块,它在其中调用了您的方法。然后外部调用方的try-catch将关闭对象。

这听起来有点抽象。您能添加一些示例代码来概述不同选项的含义吗?