Java8 传统语法:
// 普通的try catch finally语句 要释放资源可以放到finally语句块中
public void tryTestA() {
InputStreamReader isr = null;
// 传统try语法
try {
// 容易出错的代码段放此处
isr = new InputStreamReader(new FileInputStream("c:/aaa.txt"));
} catch (Exception e) {
// 在try中报错后会进入此模块,在此模块做一个提示
e.printStackTrace();
} finally {
// 在try代码块中如果抛异常【报错】,也会进入到此代码块,一般用于释放资源
// 也可在此处做个补救操作
try {
isr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Java8 升级语法:
// Java8 try语法升级
public void tryTestB() {
// 升级后的try语句可将需要释放资源的代码直接放在try后方的小括号 "()" 中,这样一些简单的资源释放
// 我们将不在需要重新写一个 finally 块了,try语句块会在使用完此对象后自动的将资源进行一个释放。
try(InputStreamReader isr = new InputStreamReader(new FileInputStream("c:/aaa.txt")))
{
isr.read();
} catch (Exception e) {
e.printStackTrace();
}
}
Java9 升级语法:
// Java9 try语法升级
public void tryTestC() throws FileNotFoundException {
InputStreamReader isr = new InputStreamReader(new FileInputStream("c:/aaa.txt"));
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("c:/aaa.txt"));
// 和 Java8 的升级语法比较起来差别并不是很大,此处就是可以一次性释放多个需要释放的资源了。
try( isr; osw ) {
isr.read();
osw.write("c:/bbb.txt");
} catch (Exception e) {
e.printStackTrace();
}
}
为了给要做实验的小伙伴们提供方便这个JDK16的包我就放在这里了,JDK特性向下兼容噢!
JDK16:https://pan.baidu.com/s/140Q7XsLuw72bC4VueFo3Fg
提取码:HJGS
想了解更多可关注持续更新,感谢观看