从Java 7开始提供了两个有用的特性:try-with-resources和multiple catch。
先来看看try-with-resources。当处理某些资源的时候,通常都会在finally里面做一些资源回收的工作。比如:
FileInputStream fis = new FileInputStream(file); try { // do something } finally { fis.close(); }
你可以把上述代码等价地写成:
try (FileInputStream fis = new FileInputStream(file)) { // do something }
是不是简单很多?满足使用try-with-resources写法的条件,代表资源的类需要实现java.io.Closeable或java.lang.AutoCloseable接口。
再来看看multiple catch。有时当我们调用一段处理时,需要同时捕获多个异常,但是我们对这些异常处理的代码是相同的。比如:
try { // do something } catch (AException e) { throw new MyException(e); } catch (BException e) { throw new MyException(e); }
你可以把上述代码等价地写成:
try { // do something } catch (AException | BException e) { throw new MyException(e); }