答案是會,廢話不多說,上碼
案例一:
public class trycatchTest
{
public static void main(String[] args) {
String a = a();
System.out.println("主方法返回 :" + a);
}
public static String a(){
try {
System.out.println("執行 try");
return "try";
}catch (Exception e){
System.out.println("執行 catch");
return "catch";
}finally {
System.out.println("執行finally");
}
}
}
結果:
執行 try
執行finally
主方法返回 :try
結論:執行try 到了return的時候會去檢測finally。finally塊存在會先執行finally塊的內容,再return。
案例二:假設finally裏面也有return呢?執行的是哪個return?
public class trycatchTest
{
public static void main(String[] args) {
String a = a();
System.out.println("主方法返回 :" + a);
}
public static String a(){
try {
System.out.println("執行 try");
return "try";
}catch (Exception e){
System.out.println("執行 catch");
return "catch";
}finally {
System.out.println("執行finally");
return "finally";
}
}
}
結果:
執行 try
執行finally
主方法返回 :finally
結論:如果finally裏面存在return,將直接返回。不再跳回try塊的return。
案例三:catch也是一樣的道理
public class trycatchTest
{
public static void main(String[] args) {
String a = a();
System.out.println("主方法返回 :" + a);
}
public static String a(){
try {
System.out.println("執行 try");
int i = 1 / 0;
return "try";
}catch (Exception e){
System.out.println("執行 catch");
return "catch";
}finally {
System.out.println("執行finally");
return "finally";
}
}
}
結果
執行 try
執行 catch
執行finally
主方法返回 :finally