在try,catch和finally中执行的顺序是什么

这个问题在这里已经有了答案:

  • 最终总是在Java中执行? 50个答案
  • 什么是第一个 - 最终还是赶上封锁? 8个答案

  • http://docs.oracle.com/javase/tutorial/essential/exceptions/finally.html

    http://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html#jls-14.20.2

    finally总是执行。 如果try returntrycatch的其余部分不会执行,然后finally执行(从最内层到最外层),然后该函数退出。


    首先你需要去阅读文档并正确理解这个概念,你可以参考这些文档

    http://docs.oracle.com/javase/tutorial/essential/exceptions/finally.html

    http://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html#jls-14.20.2

    这里在stackoverflow没有人应该解释,因为这个网站基本不toturial的目的。


    正常情况下,首先try try-catch-finally命令执行顺序,然后如果exception发生并捕获将execute catch 。 如果异常捕获与否finally都会被执行。

    如果return你的try ,在执行try将停在那里并且将执行finally 。 如果在return正常执行顺序之前抛出并捕获exception

    让我们运行下面的代码

    public static void main(String[] args) {
        String[] arr=getInfo();
        for(String i:arr){
            System.out.println(i);
        }
    }
    
    public static String[] getInfo(){
        String[] arr=new String[3];
      try {
          arr[0]="try";
          return arr;
      }catch (Exception e){
          arr[1]="catch";
          return arr;
      }finally {
          arr[2]="finally";
          return arr;
      }
    }
    

    输出

    try // return in try
    null
    finally // returning value in finally.  
    

    现在,这解释了你想要的每一件事。 finallytry return运行。

    如果在你的try有一个System.exit(0)finally不会执行。

    链接地址: http://www.djcxy.com/p/73703.html

    上一篇: What is the order of execution in try,catch and finally

    下一篇: return statement in java exception handling