Java中的finally字句

发布时间:2024年01月20日

?关于try…catch中的finally子句:

? 1.在finally子句中的代码是最后执行的,并且是一定会执行的,即使try语句块中的代码出现了异常,

finally子句必须和try一起出现,不能单独编写

? 2.finally语句通常使用在哪些情况下?

?????? 通常在finally语句中完成资源的释放/关闭。因为finally中的代码比较有保障。

????? 即使try语句块中的代码出现异常,finally中代码也会正常运行。

?import java.io.FileInputStream;

?import java.io.FileNotFoundException;

?import java.io.IOException;

?public class ExceptionTest10{

?? public static void main(String[] args){

?????? FileInputStream fis = null; //声明位置放到try外面,这样在finally中才能用

?????? try{

????????? //创建输入流对象

????????? FileInputStream Fis = new FileInputStream("D:\\course\\01-开课\\学习方法.txt");

?????????

????????? String s = null;

????????? //这里一定会出现空指针异常!

????????? s.toSting();

???????

???????? //流使用完需要关闭,因为流是占用资源的

???????? //即使以上程序出现异常,流也必须要关闭

??????? //放在这里有可能流管不了

??????? // fis.close();

?????? }catch(FileNotFoundException e){

???????? e.printStackTrace();

?????? }catch(IOException e){

????????? e.printStackTrace();

?????? }catch(NullPointerException e){

?????????? e.printStackTrace();

?????? }finally{

?????????? //流的关闭放在这里比较保险

????????? //finally中的代码是一定会执行的

???????? //即使try中出现了异常

?????????? if(fis!=null){ //避免空指针异常!

??????????????? try{

????????????????? //close方法有异常,采用捕捉的方式

????????????????? fis.close();

?????????????? }catch(IOException e){

?????????????????? e.printStackTrace();

????????????? }

???????? }

?????? }

??? }

?}

finally语句

????? 放在finally中的语句块中的代码是一定执行的。

?? 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("Hello World");

??? }

}

?public class ExceptionTest02{

??? public static void main(String[] args){

?????? try{

????????? System.out.println("try…");

????????? //退出JVM

????????? System.exit(0); //退出JVM之后,finally语句中的代码就不执行了)

?????? }finally{

??????????? System.out.println("finally…");

?????? }

?? }

}

?final finally finalize有什么区别?

? final关键字

??????? final修饰的类无法继承

??????? final修饰的方法无法覆盖

??????? final修饰的变量不能重新赋值

? finally 关键字

??????? 和try联合使用,finally语句块中的代码是必须执行的

? finalize标识符

??????? 是一个Object类中的方法名

??????? 这个方法是由垃圾回收器GC负责调用的。

? public class ExceptionTest14{

???? public static void main(String[] args){

??????? //final是一个关键字,表示最终的,不变的

??????? final int i=100;

???????

??????? //finally也是一个关键字,和try联合使用,使用在异常处理机制中

?????? //在finally语句块中的代码是一定会执行的。

?????? try{

?????? }finally{

????????? System.out.println("finally…");

??????? }

???????

?????? //finalize()是Object类中的一个方法,作为方法名出现。

?????? //所以finalize是标识符

?????? //finalize()方法是JVM的GC垃圾回收器负责调用

?????? Object obj;

? }

文章来源:https://blog.csdn.net/m0_74249744/article/details/135716054
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。