1.正常写法 代码:
public class AutoCloseableDemo {
public static void main(String[] args) {
try (AutoCloseableObjecct app = new AutoCloseableObjecct()) {
System.out.println("--try--");
} catch (Exception e) {
System.out.println("--catch--");
} finally {
System.out.println("--finally--");
}
}
public static class AutoCloseableObjecct implements AutoCloseable {
@Override
public void close() throws Exception {
System.out.println("AutoCloseable.close");
}
}
}
结果:实现AutoCloseable结果,会在执行try之后,finally之前,调用对象的close方法
--try--
AutoCloseable.close
--finally--
2.try中有异常 代码:
import java.io.IOException;
public class AutoCloseableDemo {
public static void main(String[] args) {
try (AutoCloseableObjecct app = new AutoCloseableObjecct()) {
System.out.println("--try--");
throw new IOException();
} catch (Exception e) {
System.out.println("--catch--");
} finally {
System.out.println("--finally--");
}
}
public static class AutoCloseableObjecct implements AutoCloseable {
@Override
public void close() throws Exception {
System.out.println("AutoCloseable.close");
}
}
}
结果:有