public class Main {
public static void main(String[] args) {
System.out.println(print());
}
public static String print() {
try {
float a = 1/0;
System.out.println("haha");
}catch(Exception e) {
e.printStackTrace();
}finally {
System.out.println("finally");
}
return "result";
}
}
上面的print()方法的执行到a = 1/0抛出ArithmaticException,执行catch中的语句,然后finally中的语句最后return语句。try块中的输出语句没有执行。这个过程一般没什么问题。但是当try中有return语句时需要注意!如下面代码
public class Main {
public static void main(String[] args) {
System.out.println(print());
}
public static String print() {
try {
System.out.println("haha");
return "try return";
}catch(Exception e) {
e.printStackTrace();
}finally {
System.out.println("finally");
}
return "result";
}
}
上面prin()方法中的执行顺序为:输出haha,再输出finally,最后执行return "try return"。结果如下:
因此,这里需要注意一点当finally中有return语句时,try块中的return语句会执行不到,如下代码示例:
public class Main {
public static void main(String[] args) {
System.out.println(print());
}
public static String print() {
try {
System.out.println("haha");
return "try return";
}catch(Exception e) {
e.printStackTrace();
}finally {
System.out.println("finally");
return "finally return ";
}
}
}
执行结果为:
try块中的return语句没有执行到,因此,慎重在finally块中添加return语句。