例如,如果需要在不同对象中传递资源实例,该怎么办?
由于try-for-resource的设计是(合理地)构建的,以限制其成员的范围,有人会如何处理这种设计问题?
仍然使用try-with-resources并不断传递实例? 使用常规的try-catch-finally块并将成员保持在其范围之外?
答案 0 :(得分:0)
来自DOC:
"资源是在程序完成后必须关闭的对象。 try-with-resources语句可确保在语句末尾关闭每个资源。任何实现java.lang.AutoCloseable
的对象(包括实现java.io.Closeable
的所有对象)都可以用作资源。"
如果您想要一个您需要整个资源的设计,请不要使用try-with-resources
,而是将资源保留在外部并在简单try-catch
内使用它。
但是如果你使用这个策略,请确保你做了必要的 CLEANUP
此外,如果使用传统的try-catch
,则可能需要更频繁地编写嵌套的try-catch块。(关闭资源也会引发Exception
)
答案 1 :(得分:0)
正如Ray所说,这个问题有点抽象。我想到了两种情况:
答案 2 :(得分:0)
不应始终使用资源,必须在创建可关闭对象时使用。即使你有一个传入的对象,这意味着调用者必须有一个try-catch块,在其中调用你的方法。然后外部调用者的try-catch将关闭该对象。