异常处理的时候finally语句中return注意点
2017-03-16 10:29
190 查看
return返回时不是直接返回变量的值,而是复制一份,然后返回。
对于基本类型的数据,在finally中改变return的值对与返回值是没有影响的;然而对于引用类型的数据会有影响。
package fianllyreturn;
public class Test {
public static int testFinally(){
int result = 1;
try {
result = 2;
return result;
} catch (Exception e) {
return 0;
}finally{
result = 3;//此时是对上述result=2的返回是没有影响的
System.out.println("finally1");
}
}
public static StringBuffer testFinally2(){
StringBuffer s = new StringBuffer("hello");
try {
return s;
} catch (Exception e) {
return null;
}finally{
s.append("World");
System.out.println("fianlly2");
}
}
public static void main(String[] args) {
int resultVal = testFinally();
System.out.println(resultVal);
StringBuffer resultRef = testFinally2();
System.out.println(resultRef);
}
}
程序在执行到return的时候首先将会将返回值存储在一个指定的位置,然后去执行finally中的代码,最后再返回。
注意:出现在java中的finally块代码不一定会执行
对于基本类型的数据,在finally中改变return的值对与返回值是没有影响的;然而对于引用类型的数据会有影响。
package fianllyreturn;
public class Test {
public static int testFinally(){
int result = 1;
try {
result = 2;
return result;
} catch (Exception e) {
return 0;
}finally{
result = 3;//此时是对上述result=2的返回是没有影响的
System.out.println("finally1");
}
}
public static StringBuffer testFinally2(){
StringBuffer s = new StringBuffer("hello");
try {
return s;
} catch (Exception e) {
return null;
}finally{
s.append("World");
System.out.println("fianlly2");
}
}
public static void main(String[] args) {
int resultVal = testFinally();
System.out.println(resultVal);
StringBuffer resultRef = testFinally2();
System.out.println(resultRef);
}
}
程序在执行到return的时候首先将会将返回值存储在一个指定的位置,然后去执行finally中的代码,最后再返回。
注意:出现在java中的finally块代码不一定会执行
相关文章推荐
- Java异常处理中finally中的return会覆盖catch语句中的return语句
- java中异常处理finally和return语句的执行顺序
- java中异常处理finally和return语句的执行顺序
- java中异常处理finally和return语句的执行顺序
- java中异常处理finally和return语句的执行顺序
- Java异常处理中,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
- Java异常处理中同时有finally和return语句的执行问题
- java中异常处理finally和return语句的执行顺序
- Java异常处理中,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
- java异常处理-finally中使用return和throw语句
- Java异常处理---finally和return的执行顺序
- 关于异常处理语句catch和finally的执行先后顺序
- java异常处理:finally中不要return
- c#描述异常处理语句try、catch、finally执行时的相互关系
- Java基本功练习十八(异常处理【获取异常信息、链式异常和finally语句、自定制异常】)
- Java 异常处理:finally,return
- java在处理异常时finally语句的作用
- try ,finally都抛出异常如何处理.如果try中抛出了异常,在控制权转移到调用栈上一层代码之前, finally 语句块也会执行,如果finally抛出异常,try语句快抛出的那个异常就
- return 于try{}catch(Exception e){}finally{}语句结合使用的一点注意事项
- C# 异常处理-finally 和 return