答案是会,废话不多说,上码
案例一:
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