Java語言裏,在try語句塊中return,還會繼續執行finally語句塊中的語句麼?

1.首先嚐試在try中return,看finally是否能執行到,測試代碼以下:

public class FinallyTest {

public String returnString() {

String str;
try {
str = "Hello, William";
System.out.println( "This is try block.");
return str;
}
catch(Exception e) {
System.out.println( "This is catch block.");
}
finally {
System.out.println( "This is finally block.");
}
return null;
}

}

結果是:
This is try block.
This is finally block.
可見無論try裏是否有return,finally最終仍會執行到。
2.可是在try中System.exit(0),finally還會不會執行呢?仍是來段測試代碼,以下:

public class FinallyTest1 {

public static String returnString() {

String str;
try {
str = "This is try block.";
System.out.println(str);
System.exit(0);
}
catch(Exception e) {
System.out.println( "This is catch block.");
}
finally {
System.out.println( "This is finally block.");
}
return null;
}

}

結果是:
This is try block.
可見,這種狀況下,finally還未被執行,程序就退出了。碰到這種狀況,若是還想在程序退出以前執行一些代碼,能夠參見addShutdownHook這個函數。具體這個函數的用法,將在另外的博客中詳解。
相關文章
相關標籤/搜索