如果我们在try中给出这样的return语句,那么执行的顺序是什么
try{
--- ----
-----
return a;
}
catch{
}
finally{
}
如果在try中有返回,这将是执行顺序。请让我知道
答案 0 :(得分:2)
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
。如果return
中有try
,则try
和catch
的其余部分不会执行,然后执行finally
(从最内层到最外层),然后功能退出。
答案 1 :(得分:1)
首先,您需要获取文档并正确理解这些概念,您可以参考这些文档
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没有人应该解释,因为这个网站基本上不是一个完整的目的。
答案 2 :(得分:0)
在评估return语句之后,最后总是执行。
答案 3 :(得分:0)
无论是什么情况finally
总会执行。
在成功执行try
的情况下,它不会执行catch
阻止。如果try
块抛出异常,则catch
块将执行
答案 4 :(得分:0)
正常情况下,try-catch-finally
的订单执行顺序为try
,如果exception
拖出并抓住execute
catch
。如果被捕获的异常finally
将始终执行。
如果return
中有try
,则try
中的执行将停在那里并执行finally
。如果exception
在return
正常执行顺序出现之前抛出并被捕获。
让我们运行以下代码
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;
}
}
Out put
try // return in try
null
finally // returning value in finally.
现在这个问题解释了你想要的每一件事。在finally
中有return
时会try
运行。
如果System.exit(0)
中有try
,finally
将无法执行。
答案 5 :(得分:0)
如果try中有返回,则控制将转到finally块,执行存在的代码然后退出。所以在这期间,如果在finally块中,try中返回的任何变量都有任何更改,如果在finally中返回相同的变量,则返回最新的。
try {
i = 11;
return i;
} catch (Exception e) {
// TODO: handle exception
} finally{
i = 12;
return i; --> This will be returned
}
//return i;
}
但如果只有修改,最后没有回溯,则try中返回的值将是最终值。
try {
i = 11; --> this will be returned
return i;
} catch (Exception e) {
// TODO: handle exception
} finally{
i = 12; -- this will be executed
}
//return i;
}
答案 6 :(得分:0)
在try-catch
处理中,当return
来自try
块时,它将超出try-catch-finally
的范围..因为catch块只接受由try
引发..而不是返回的东西,现在当你从try块返回时它不会到达try端并最终不会被执行,它会出try-catch-finally
块,返回到你的代码。