「这是我参与11月更文挑战的第21天,活动详情查看:2021最后一次更文挑战」
前言
大家好,我是程序猿小白 gw_Gw,很高兴能和大家一起学习进步。
以下内容部分来自于网络,如有侵权,请联系我删除,本文仅用于学习交流,不用作任何商业用途。
摘要
本文主要介绍Java异常处理中的try catch处理和finally的用法以及Java7对try catch处理的优化的一些基本语法。
1. try catch和finally的使用
1.1 try catch使用
Java中的异常分为Checked异常和Runtime异常。我们通常不必处理Runtime异常,但是JVM会强制我们处理Checked异常。并且为我们提供了try catch语句来处理异常。
格式如下:
try{
//可能会发生异常的语句
}catch(Exception1 e){
//异常处理
}
catch(Exception2 e){
//异常处理
}
finally{
//一定会执行的语句,通常用来关闭资源文件
}
我们把可能发生异常的语句放到try块中,并在catch中捕获该异常,如果发生了该异常就进入到对应的catch块中处理。如果发生了异常,却找不到对应的catch块来处理,那JVM就会强制退出程序。
所以一个try块可以对应多个catch处理。也可以没有catch块,但是这种情况一定要有finally块。
也就是说一个try块,至少有一个catch或者没有catch,但有一个finally块,亦或者两个都有。
如果有多个catch块,那么JVM只会执行按顺序执行第一个满足的catch块。因此在书写catch块时也有规定,上面的catch块处理的异常的范围要小于等于下面的catch块处理的异常范围,也就是说上面的异常是下面的异常的孩子或者兄弟,否则会报错。
1.2 finally使用
除非在try catch块中执行了退出了虚拟机的方法(System.exit(1)),否则在finally中的代码一定会执行,哪怕在前面遇到了return。
所以我们通常在finally块中关闭资源文件,来确保资源文件被关闭。但是要尽量避免不要在finally块中执行return或throw语句,这会导致try,catch块中的return和throw语句失效。(因为finally一般都会执行,会覆盖掉try catch中的内容)
1.3 被Java7优化的异常处理
Java7对异常处理进行了优化:
- 多异常捕获
- 自动关闭资源的try语句
1.3.1 多异常捕获
Java以前,一个catch只能捕获一种异常,而Java7规定一个catch可以捕获多种异常,使用“|”分割即可。但是在多异常捕获时,异常变量被隐式的final修饰,因此不能对异常变量重新赋值。
1.3.2 自动关闭资源的try语句
Java7出现了一种新语法用来关闭资源文件。
语法格式:
try(
//这里是打开资源的语句,可以有多个;
语句1;
语句2//最后一条语句不加分号
){
}
这种写法可以没有catch和finally,因为已经隐含了finally块在里面。
小结
以上就是对Java异常处理中的try catch处理和优化后的try catch处理的一些基本用法,希望对读者有所帮助,如有不正之处,欢迎留言评论。