学习异常处理-自动关闭资源的try语句块
/**
六 java9增强的自动关闭资源的try语句块(java7事实上已经有了自动关闭try语句块)
写法: try(){}-catch-finally
综上:需要关闭的资源,数据库连接,网络连接
1 要么在小括号里声明且初始化(java7)注意'且'字
2 (推荐)要么在try自动关闭语句之前初始化,然后再try的小括号的声明一下即可,多个资源需要分号间隔(java9增强)
java9解释: 资源变量必须为final的. 要么必须要么final显式声明类型,要么是隐式final修饰(小括号里声明即成了被隐式final修饰)
注意:
1 为保证正常关闭,这些资源类必须实现AutoCloseable或Closeable接口,事实上java的这些资源类已经实现了)
2 自动关闭try语句块,其实相当于包含了隐式的finally语句块,所以它可以没有catch和finally,亦可以包含
*/
/**
六 java9增强的自动关闭资源的try语句块(java7事实上已经有了自动关闭try语句块)
写法: try(){}-catch-finally
要求:
1 要么在小括号里声明且初始化(java7)注意'且'字
2 (推荐)要么在try自动关闭语句之前初始化,然后再try的小括号的声明一下即可,多个资源需要分号间隔(java9增强)
java9解释: 资源变量必须为final的. 要么必须要么final显式声明类型,要么是隐式final修饰(小括号里声明即成了被隐式final修饰)
3 可以包含catch语句或finally语句.(二选一或同时出现)
注意:
1 为保证正常关闭,这些资源类必须实现AutoCloseable或Closeable接口,事实上java的这些资源类已经实现了)
2 自动关闭try语句块,其实相当于包含了隐式的finally语句块,所以它可以没有catch和finally,亦可以包含
*/
import java.io.*;
public class 异常处理 {
public static void main(String[] args) throws Exception {
//隐式final修饰((java9))
//变量只要被try的小括号里被访问即即相当于被隐式final的修饰了,因此资源无需显示的final修饰
//如下证明,hobby没有使用final修饰
var hobby1 = new StringReader("吃饭了");//StringReader为字符串输入流,read()一次读取一个字符
try ( hobby1){
System.out.println((char)hobby1.read());//吃
}
// System.out.println((char)hobby1.read());
// 上面语句报错,说明hobby资源已经关闭.try自动关闭资源生效了.印证了hobby在try小括号里访问后被隐式final的修饰了
// 如下显式的使用final修饰资源(java9)
final var hobby2 = new StringReader("吃饭了");//StringReader为字符串输入流,read()一次读取一个字符
try ( hobby2){
System.out.println((char)hobby2.read());//吃
}
// System.out.println((char)hobby2.read());
// 上面语句报错,说明hobby资源已经关闭.try自动关闭资源生效了
//在小括号里初始化(java7)
StringReader test = null;//先声明一个变量,因为下面的hobby为try语句块局部变量,外面无法访问,导致无法测试
//StringReader为字符串输入流,read()一次读取一个字符
try ( StringReader hobby3 = new StringReader("吃饭了")){
System.out.println((char)hobby3.read());//吃
test = hobby3;
}
// System.out.println((char)test.read());
// 上面语句报错,说明hobby资源已经关闭.try自动关闭资源生效了
}
}
运行结果:
吃
吃
吃
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报