关于try…catch中的finally子句
1、在finally子句中的代码是最后执行的,并且是一定执行的,即使try语句块中的代码块出现了异常
finally子句必须和try一起出现,不能单独编写
2、finally语句通常使用在哪些情况下呢?
通常在finally语句块中完成资源的释放/关闭
因为finally中的代码比较有保障
即使try语句块中的代码出现异常,finally中代码也会正常执行
示例代码01:
public class ExceptionTest10 {
public static void main(String[] args) {
FileInputStream fis = null;//声明位置放到try外面。这样在finally中才能使用
try {
//创建输入流对象
fis = new FileInputStream("D:\\Noepad++\\config.xml");
//开始读文件。。。
String s = null;
//这里一定出现空指针异常
s.toString();
System.out.println("HelloWorld");
//流使用完需要关闭,因为流是占用资源的
//即使以上的程序出现异常,流也要关闭
//放在这里有可能流关闭不了
//file.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}catch(NullPointerException e){
e.printStackTrace();
}finally {
System.out.println("Hello 浩克!");
//流的关闭放在这里比较安全
//finally中的代码是一定会执行的
//即使try中出现了异常
if(!(fis == null)){//避免空指针异常
try {
//close()方法,采用捕捉的方式
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
System.out.println("HelloWorld!");
}
}
运行结果:
3、放在finally语句块中的代码是一定会执行的【再次强调!!】
示例代码02:
public class ExceptionTest11 {
public static void main(String[] args) {
/*
* try和finally,没有catch可以吗?可以
* try不能单独使用
* try finally可以联合使用
* 以下代码的执行顺序:
* 先执行try..
* 在执行finally..
* 最后执行 return(return语句只要执行方法必然结束)
*
* */
try{
System.out.println("try...");
return;
}finally{
//finally中的语句会执行。能执行到
System.out.println("finally..");
}
//这里不能写语句,因为这个代码是无法执行到的
//System.out.println("HelloWorld!");
}
}
运行结果:
示例代码03:
public class ExceptionTest12 {
public static void main(String[] args) {
try{
System.out.println("try..");
// 退出JVM
System.exit(0);// 退出JVM之后,finally语句中的代码就不执行了!
}finally{
System.out.println("finally..");
}
}
}
运行结果:
4、finally面试题
代码:
//finally面试题
public class ExceptionTest13 {
public static void main(String[] args) {
int reValue = m();
System.out.println(reValue);//100
}
public static int m(){
int i = 100;
/*
java语法规则(有一些规则是不能破坏的,一旦这么说了,就必须这么做!):
java中有一条这样的规则:
方法体中的代码必须遵循自上而下顺序依次逐行执行(亘古不变的语法!)
java中海油一条语法规则:
return语句一旦执行,整个方法必须结束(亘古不变的语法!)
*/
try{
// 这行代码出现在int i = 100;的下面,所以最终结果必须是返回100
// return语句还必须保证是最后执行的。一旦执行,整个方法结束。
return i;
}finally{
i++;
}
}
}
运行结果:
100
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/94279.html