所有 try 语句(try、try-finally、try-catch-finally)是否存在隐式 finally 块,还是仅存在 try-with-resources?
没有。我能想到的最接近“隐式关闭功能”的东西是终结:一些类可能有一个终结方法,只要对象被垃圾收集,它就会在稍后的时间执行。那将不得不调用 close 方法,所以不确定 implicit 是正确的词。在 1.7 和 try-with-resources 之前没有 Closeable 接口来指示需要关闭的东西,没有接口可以用来标记一个类来告诉 jvm 它需要关闭。这与任何类型的 try 块无关。
try 块首先出现并且是完全显式的。 Try-with-resources 后来出现,它解决了使用 try-finally 块时可能发生的异常屏蔽问题。这是 我对为什么创建 try-with-resources 的解释。