finally的用法及注意事项

必然执行的异常统一的处理出口通俗点来讲:无论是否发生异常,finally必然执行

Finally:

1.finally作为异常处理的一部分,它一般用在try/catch语句中。

2.网络编程,I/o处理,数据库操作等 在执行这些操作时,都会发生异常。无论是网络编程还是客户端连接服务器以及连数据库占用数据库时,都需要释放,释放在finally里。

Finally在什么情况下执行,什么情况下不会执行?(注意事项)

软件在内存里没了,电脑停电关机这些因素的情况下才会不执行

否则一定会执行

两个对比案例

package com.java.demo1;

public class Demo6 {

public static void main(String[] args) {

Person p = haha();

System.out.println(p.age);

}

public static Person haha(){

Person p = new Person();

try{

p.age = 18;

return p;

}catch(Exception e){

return null;

}finally {

p.age = 28;

}

}

static class Person{

int age;

}

}

初学者对finally的认知_java

这个代码是备份的内存地址,内存地址没变,年龄换成28,所以结果为28

package com.java.demo1;

public class Demo7 {

public static void main(String[] args) {

int a = haha();

System.out.println(a);

}

public static int haha(){

int a = 10;

try{

return a;

}catch(Exception e){

}finally {

a = 20;

}

return 0;

}

static class Person{

int age;

}

}

初学者对finally的认知_数据库_02

这个代码是备份的返回值,返回的还是原来的a。这也就是引用类型和非应用类型的关系。



更多内容详见微信公众号:Python研究所

初学者对finally的认知_网络编程_03