return在try-catch-finally中的执行
来源:互联网 发布:android ble数据丢包 编辑:程序博客网 时间:2024/05/16 15:14
在try-catch-finally中, 当return遇到finally:
1.在try catch块里return的时候,finally也会被执行。
2.return 语句会把后面的值复制到一份用来返回,如果return的是基本类型的,finally里对变量的改动将不起效果,如果 return 的是引用类型的,改动将可以起效果。
3.finally里的return语句会把try catch块里的return语句效果给覆盖掉。
以上内容引自:http://blog.csdn.net/andymu077/article/details/6649812
下面用实例验证分析以上结论。
1、在try或catch块里return的时候,finally也会被执行。且执行顺序为:try或catch中return前的语句,finally中的语句,try或catch中的return。
public class Test { public static void main(String[] args) { String s = null; System.out.println(test(s)); } public static int test(String s){ try{ System.out.println("try"); return 1; }catch (Exception e){ System.out.println("catch"); return 2; }finally{ System.out.println("finally"); }}
输出结果为:
try
finally
1
public class Test { public static void main(String[] args) { String s = null; System.out.println(test(s)); } public static int test(String s){ try{ int i = s.length(); System.out.println("try"); return 1; }catch (Exception e){ System.out.println("catch"); return 2; }finally{ System.out.println("finally"); } }}
输出结果为:
catch
finally
2
2、return 语句会把后面的值复制一份用来返回,如果return的是基本类型的,finally里对变量的改动将不起效果,如果return 的是引用类型的,改动将可以起效果。
(1)返回的是基本类型(包含String)时:
public class Test { public static void main(String[] args) { System.out.println(test()); } public static int test(){ int a = 0; try{ a = 1; return a; }catch (Exception e){ }finally{ a = 2; } return a; }}
输出结果为:1
(2)返回的是引用类型时:
public class Test { public static void main(String[] args) { System.out.println(test()); } public static StringBuffer test(){ StringBuffer a = new StringBuffer(); try{ a = a.append("1"); return a; }catch (Exception e){ }finally{ a = a.append("2"); } return a; }}
输出结果为:12
3、finally里的return语句会把try catch块里的return语句效果给覆盖掉。此时执行finally中的return语句。
public class Test { public static void main(String[] args) { System.out.println(test()); } public static String test(){ String a; try{ a = "1"; return "a(try)="+a; }catch (Exception e){ }finally{ a = "2"; return "a(finally)="+a; } }}
输出结果为:a(finally)=2
0 0
- return在try-catch-finally中的执行
- return语句在try-catch-finally中的执行顺序
- return语句在try-catch-finally中的执行顺序
- try...catch...finally中的return执行顺序
- try...catch...finally中的return
- try...catch...finally中的return
- try...catch...finally中的执行顺序和return语句 总结
- Java中的try-catch-finally-return的执行顺序
- return在try catch finally中的执行顺序(最通俗易懂的总结)
- finally在try和catch块以及return中的执行顺序
- return在try-catch-finally语句中的使用
- return语句在Java的Try Catch Finally中的行为
- try, catch, finally, return的执行顺序
- try、catch、finally、return的执行顺序
- try、catch、finally、return的执行顺序
- try catch finally return 的执行顺序
- try、catch、finally、return的执行顺序
- try-catch-finally-return执行路径总结
- java生成带有样式、表格、不定图片的word
- 数据结构实验之栈八:栈的基本操作
- 闭包的理解(精简)
- 守护进程
- 求sin的泰勒展开式
- return在try-catch-finally中的执行
- remote分页使用注意
- 数据库事务隔离级别
- 求线与线的夹角
- 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活(0-1背包)
- js回顾第三阶段
- Java集合类UML图
- php导入命名空间中的类
- 定时器