java try catch finally return执行顺序

try{
}catch{
}finally{
}
return;
这样一段代码,顺序是不是先try块无异常的话就return,有异常的话就catch块再return,最后再finally?

执行顺序无异常是try finally return

有异常并且catch中没有跳出程高此序块的语句时顺序是try catch finally return

有异戚瞎迅常并且catch中有跳出程序块的语句时是try catch(执行到跳出之前)神键 finally  catch(执行跳出)

给你个参考程序吧

贴main函数里执行下就看出来顺序了

System.out.println("begin");
List list=new ArrayList<Integer>();
list.add(1);
for(int i=0;i<=2; i++){
try{
System.out.println(list.get(i));
}catch(Exception e)
{
System.out.println(e);
continue;
}finally{
System.out.println("stop");
}
System.out.println("out");
}

先try 若有异常就catch,然后finally

class Test
{
    public static void main(String args[]) 
    { 
        System.out.println(Test.test()); 
   塌乱 }

    public static String test()
    {
        try {
            System.out.println("try");
          圆族  throw new Exception();
        } catch(Exception e) {
            System.out.println("catch");
           橘衫弊 return "return"; 
        } finally {  
            System.out.println("finally");
            return "return in finally"; 
        }
    }
}

The results is:
try
catch
finally
return in finally

try里面是放的有可能出错的代码,如果try里面的代码出错了,catch就会捕获到所出的错误,如果没有纯拿好错误就不执行catch里面的代码,catch就相当于一个错误提示,错了就给你做铅说,至于那个finally是在try-catch-finaly中最敏乎后且必须要执行的代码,最后才是return
try无异常的话,进finally,然仿穗高后族知return;有异常进catch,然后进finally,不会执行到return那一备尺行。
不是没销携的枯伏 try 执行 出异常 catch 然后 finally 不出异常 直接finally 最后执斗举行return