1.finally中的代码一定会执行。
2.执行顺序一般是try->catch(try中发生异常)->finally。
3.finally中有return时,try中或catch中的return也会执行,但最终返回的值是finally中return的值。
4.try或catch中有return时,finally仍会执行。
下面是其中一个例子:
public static void main(String[] args) {
String s = "a";
System.out.println(test(s));
}
public static String test(String s){
try{
throw new Exception("test");
} catch (Exception e) {
e.printStackTrace();
return s+="b";
} finally {
return s+="c";
}
}
该程序运行结果是abc。
public static void main(String[] args) {
String s = "a";
System.out.println(test(s));
}
public static String test(String s){
try{
throw new Exception("test");
} catch (Exception e) {
e.printStackTrace();
return s+="b";
} finally {
System.out.println("finally");
}
}
执行结果是
java.lang.Exception: test
at test2.Show.test(Show.java:12)
at test2.Show.main(Show.java:7)
finally
ab