Regarding java's try/catch syntax; are these blocks equivalent?
本问题已经有最佳答案,请猛点这里访问。
在下面的块中:
1 2 3 4 5 6 7 8 | try (final InputStream fis = new BufferedInputStream(Files.newInputStream(f.toPath())); final ArchiveInputStream ais = factory.createArchiveInputStream(fn, fis)) { System.out.println("Created" + ais.toString()); ArchiveEntry ae; while ((ae = ais.getNextEntry()) != null) { System.out.println(ae.getName()); } } |
这是否等同于以下数据块:
1 2 3 4 5 | try { final InputStream fis = new BufferedInputStream(Files.newInputS...; } catch { System.out.println("Created" + ais.toString());... } |
我在ApacheCommon的库中偶然发现了这个用于try/catch的语法,我不确定如何使用它。如果我在这里所能想到的唯一假设中是不正确的,有人能帮助我理解它吗,或者给我指一个解释这个语法的引用吗?我在这里搜索了很多东西,没有找到任何合适的东西,尽管我的搜索功能不是最好的。
事先谢谢!
不。第一个是尝试使用资源,这不是一个直观的名称。当您需要使用某个资源然后关闭它时,就会使用它。它避免了每次都必须手动关闭这些资源,并有效地将资源范围限制在花括号内。
后一个不同:Try/Catch块退出后,资源