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");
}

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-10-10

先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

第2个回答  2013-12-30
try里面是放的有可能出错的代码,如果try里面的代码出错了,catch就会捕获到所出的错误,如果没有错误就不执行catch里面的代码,catch就相当于一个错误提示,错了就给你说,至于那个finally是在try-catch-finaly中最后且必须要执行的代码,最后才是return
第3个回答  2013-12-30
try无异常的话,进finally,然后return;有异常进catch,然后进finally,不会执行到return那一行。追问

为何有异常就不执行return了?

追答

一旦异常被catch了,那么就会跳入catch块的语句继续执行,出错行后面的语句都不会继续执行了,除了finally块中的。
换句话说,除非你在catch块中或者finally块中return,不然就肯定无法return了。

第4个回答  2013-12-30
不是的 try 执行 出异常 catch 然后 finally 不出异常 直接finally 最后执行return

try、catch、finally语句块的执行顺序?
总的来说,顺序是try-catch-finally。try语句块必须存在,而catch和finally块可以被省略。无论是否发生异常,finally块中的代码总会被执行。这是用来确保资源释放或确保某些操作一定会执行。正常情况下,如果try或catch块中遇到return语句,finally语句块在方法返回之前执行。当在try块或catch块中遇到return语句...

java中类的一个方法中的返回值(return),为什么总是写在try\/catch的后面...
执行步骤是这样的:先执行try里面的语句,如果try里面有异常,则执行catch里面的语句,接着执行finally语句。。如果try语句里没异常,则直接执行finally里面语句。。。finally语句执行完了,接着执行外面的语句啊,肯定可以执行到外面的return语句。。。你是不是觉得,发生了异常程序就停止了?那是不正确的,...

java中的return和finally谁先执行
finally先执行.可以形象的说,方法在顺序化的一直往下走,走着走着,发现了Rerurn(并未执行),它知道它快活不下去了,临死前.他就去找Finally,让Finally把事情做完.这种情况在Debug的时候比较明显,走到Return所在行,就进Finally,然后在回到Rerurn,做返回 ...

Java--异常的处理方式之一:捕获异常
捕获顺序:子类先于父类,多余catch可省略。finally确保某些代码执行,如资源关闭。try-catch-finally执行流程:try块执行,无异常跳至finally,有异常则跳转相应catch块处理,后执行finally。finally为可选,但无论是否出现异常都会执行。若try和catch中存在return,finally仍会执行。finally不执行的情况:在执...

Java中出现异常如何进行处理,其中代码执行的步骤是什么
如果想在当前类处理,则try catch这个异常 若是throw的话,则发现异常直接抛回给上层,执行顺序是:抛出异常、上层处理 若try catch的话 try{ new Exception();}catch(Exception ex){ 这里处理异常 } 如果有finally块的话 执行顺序为: try、catch、finally finally无论是否有异常都将执行。

谁能讲解一下java面向对象中的异常处理
finally语句块会在方法执行return之前执行,一般结构如下: try{ 程序代码 }catch(异常类型1 异常的变量名1){ 程序代码 }catch(异常类型2 异常的变量名2){ 程序代码 }finally{ 程序代码 } catch语句可以有多个,用来匹配多个异常,匹配上多个中一个后,执行catch语句块时候仅仅执行匹配上的异常。catch的类型是Java语言...

Java中try{}里面有return,finally里的代码会不会执行,什么时候被执行...
1、不管有木有出现异常,finally块中代码都会执行;2、当try和catch中有return时,finally仍然会执行;3、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在...

Java finally语句到底是在return之前还是之后执行
2 在try块中有System.exit(0);这样的语句,System.exit(0);是终止Java虚拟机JVM的,连JVM都停止了,所有都结束了,当然finally语句也不会被执行到。finally块的语句 在try或catch中的return语句执行之后 返回参数之前执行 且finally里的修改语句,可能影响也可能不影响try或catch中 return已经确定的返回...

java异常中try或catch语句中可以有return语句吗?如有return会执行finall...
try或catch中都可以有return语句,如果遇到return会先执行finally后执行return;只有一种情况特殊,就是代码中有System.exit(1);的存在,return才不会执行

java中异常处理时为什么可以只要try-finally,而可以不要catch啊。
try、catch、finally语句块的执行顺序为:①当try没有捕获到异常时:try语句块中的语句逐一被执行,程序将跳过catch语句块,执行finally语句块和其后的语句。②当try捕获到异常,catch语句块里没有处理此异常:这种情况下,该异常将会抛给JVM处理,finally语句块里的语句还是会被执行,但finally语句块后的...

相似回答