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;
}
}
这个代码是备份的内存地址,内存地址没变,年龄换成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;
}
}
这个代码是备份的返回值,返回的还是原来的a。这也就是引用类型和非应用类型的关系。