Java —— try-catch-finally-return的执行顺序
来源:互联网 发布:小学语文同步软件 编辑:程序博客网 时间:2024/05/17 02:16
(a)若try中的代码出现异常,try会终止执行,程序的控制权会交由catch中的异常处理程序
(b)可有多个catch,但catch的排列要从子类到父类
情况1:try块中没有抛出异常,且try和finally块中都有return语句
代码:
public static int NoException(){ int i=10; try{ System.out.println("i in try block is"+i); return --i; }catch(Exception e){ --i; System.out.println("i in catch - form try block is"+i); return --i; }finally{ System.out.println("i in finally - from try or catch block is"+i); return --i; } }
执行结果:
i in try block is10
i in finally - from try or catch block is9
the method value is8
执行顺序:
执行try块,执行到return语句时,先执行return的语句,–i,但是不返回到main 方法,执行finally块,遇到finally块中的return语句,执行–i,并将值返回到main方法,这里就不会再回去返回try块中计算得到的值
情况2:try块中没有抛出异常,仅try中有return语句
代码:
public static int NoException(){ int i=10; try{ System.out.println("i in try block is--"+i); return --i; }catch(Exception e){ --i; System.out.println("i in catch - form try block is--"+i); return --i; }finally{ System.out.println("i in finally - from try or catch block is--"+i); --i; System.out.println("i in finally block is--"+i); //return --i; } }
执行结果:
i in try block is–10
i in finally - from try or catch block is–9
i in finally block is–8
the method value is–9
执行顺序:
try中执行完return的语句后,不返回,执行finally块,finally块执行结束后,返回到try块中,返回i在try块中最后的值
情况3:try块中抛出异常,且catch,finally中都有return语句
代码:
public static int WithException(){ int i=10; try{ System.out.println("i in try block is--"+i); i = i/0; return --i; }catch(Exception e){ System.out.println("i in catch - form try block is--"+i); --i; System.out.println("i in catch block is--"+i); return --i; }finally{ System.out.println("i in finally - from try or catch block is--"+i); --i; System.out.println("i in finally block is--"+i); return --i; } }
执行结果:
i in try block is–10
i in catch - form try block is–10
i in catch block is–9
i in finally - from try or catch block is–8
i in finally block is–7
the method value is–6
执行顺序:
抛出异常后,执行catch块,在catch块的return的–i执行完后,并不直接返回而是执行finally,因finally中有return语句,所以,执行,返回结果6
情况4,try块中抛出异常,仅catch中有return语句
执行顺序:
类似情况2,执行完finally语句后,依旧返回catch中的执行return语句后的值,而不是finally中修改的值
情况5:try和catch中都有异常,finally中无return语句
代码:
public static int CatchException(){ int i=10; try{ System.out.println("i in try block is--"+i); i=i/0; return --i; }catch(Exception e){ System.out.println("i in catch - form try block is--"+i); int j = i/0; return --i; }finally{ System.out.println("i in finally - from try or catch block is--"+i); --i; System.out.println("i in finally block is--"+i); //return --i; } }
执行结果:
i in try block is–10
i in catch - form try block is–10
i in finally - from try or catch block is–10
i in finally block is–9
Exception in thread “main” java.lang.ArithmeticException: / by zero
at exception.ExceptionTest0123.CatchException(ExceptionTest0123.java:29)
at exception.ExceptionTest0123.main(ExceptionTest0123.java:17)
执行顺序:
在try块中出现异常,到catch中,执行到异常,到finally中执行,finally执行结束后判断发现异常,抛出
情况6:try和catch中都有异常,finally中有return语句
代码:
public static int CatchException(){ int i=10; try{ System.out.println("i in try block is--"+i); i=i/0; return --i; }catch(Exception e){ System.out.println("i in catch - form try block is--"+i); int j = i/0; return --i; }finally{ System.out.println("i in finally - from try or catch block is--"+i); --i; System.out.println("i in finally block is--"+i); return --i; } }
执行结果:
i in try block is–10
i in catch - form try block is–10
i in finally - from try or catch block is–10
i in finally block is–9
the method value is–8
执行顺序:
try块中出现异常到catch,catch中出现异常到finally,finally中执行到return语句返回,不检查异常
转载地址:
http://blog.csdn.net/aaoxue/article/details/8535754
- Java —— try-catch-finally-return的执行顺序
- try, catch, finally, return的执行顺序
- try、catch、finally、return的执行顺序
- try、catch、finally、return的执行顺序
- try catch finally return 的执行顺序
- 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含有return 的try catch finally的执行顺序
- java中try catch finally与return的执行顺序
- Java中try-catch-finally-return的执行顺序
- 关于Java中try-catch-finally-return的执行顺序
- 关于Java中try-catch-finally-return的执行顺序
- Java中try-catch-finally-return的执行顺序
- Java中的try-catch-finally-return的执行顺序
- JAVA | 22
- QT如何通过文本框选择文件(图像、视频)
- cookie和session之自己的理解
- dualpal
- FPGA入门实验四:时间基准电路 和 带使能的多周期计数器
- Java —— try-catch-finally-return的执行顺序
- mysql-5.7.18安装,启动MySQL服务
- 详谈Python爬虫代理设置
- 请求发送者与接收者解耦——命令模式(二)
- linux ubuntu 16.04 编译bitcoin源码 configure错误的几个问题
- 人工智能借立项加速落地 未来还有哪些新兴领域?
- dp最长公共子序列
- C++中string类型的初始化与赋值
- cocos2dx-js模块加载