例如,如果一个资源的实例需要在不同的对象中传递怎么办?
由于 try-with-resource 的设计(正确地)旨在限制其成员的范围,那么有人将如何处理这种设计问题?
还在使用 try-with-resources 并不断地传递实例吗?使用常规的 try-catch-finally 块并将成员保持在其范围之外?
例如,如果一个资源的实例需要在不同的对象中传递怎么办?
由于 try-with-resource 的设计(正确地)旨在限制其成员的范围,那么有人将如何处理这种设计问题?
还在使用 try-with-resources 并不断地传递实例吗?使用常规的 try-catch-finally 块并将成员保持在其范围之外?
正如雷所说,这个问题有点抽象。我想到了两个场景:
来自 DOC :“资源是程序完成后必须关闭的对象。try-with-resources 语句确保每个资源在语句结束时关闭。任何实现的对象,java.lang.AutoCloseable
包括所有实现java.io.Closeable
, 的对象可以用作资源。”
如果您想要一个始终需要资源的设计,请不要选择try-with-resources
,而是将资源保留在外部并在内部简单地使用它try-catch
。但是如果你使用这个策略,请确保你做了必要的CLEANUP
此外,如果您使用传统的,您可能需要更频繁地编写嵌套的 try-catch 块try-catch
。(关闭资源也会抛出Exception
)
不应始终使用资源尝试,并且必须在创建可关闭对象时使用。即使你有一个传入的对象,这意味着调用者必须有一个 try-catch 块,它在其中调用你的方法。然后外部调用者的 try-catch 将关闭该对象。