finally會在return前執行, 但是return的路徑會先于finally形成. 代碼解析如下:
public class Test14 {
public static void main(String[] args) {
System.out.println(method());
}
public static int method() {
int a = 10;
int b = 0;
try {
System.out.println(a / b);
} catch (ArithmeticException e) {
//進入到catch語句,此時return 20(不是return a)路徑已經形成,
//然後執行finally a=30,但是return的是20不是a-30,是以return值不影響
a = 20;
return a;
} finally {
a = 30;
//如果加上下面的return a,則替換掉原先的return路徑,變為return 30.
//return a;
}
return 0;
}
}