Java 的AutoCloseable
特性“重用”try/catch 语义:
try (Stream x = ...) {
// work with x
}
// x is out of scope and was auto-closed
我很好奇为什么他们没有为这个新特性引入新的语义。try
意味着您希望主体在某一点或另一个(或它可能)抛出异常。这对我来说似乎与“实例化这个资源并在我完成后关闭它”有很大不同。这与处理异常没有任何关系。为什么不是这样的...
with (Stream x = ...) { ... }
using (Stream x = ...) { ... } // I know, C# syntax
我不想引发争论,我想知道 Java 团队决定重用try
此功能的原因。