關于Java中的try-catch-finally語句和return
第一:return語句并不是函數的最終出口,如果有finally語句,這在return之后還會執行finally(return的值會暫存在棧里面,等待finally執行后再返回)
第二:finally里面不建議放return語句,根據需要,return語句可以放在try和catch里面和函數的最后。可行的做法有四:
1、return語句只在函數最后出現一次。
2、return語句僅在try和catch里面都出現。
3、return語句僅在try和函數的最后都出現。
4、return語句僅在catch和函數的最后都出現。
注意,除此之外的其他做法都是不可行的,編譯器會報錯。
(1)如果程序運行到try成功時可以返回結果,則采用方法2。(見下面的例子test0_1,在那個例子中,方法2和4都是可行的,但是推薦方法2?)
(2)如果程序運行到catch時(即中途出錯時)無需再繼續執行后面的代碼了,則采取方法4;(見下面例子中的test0,在那個特殊的例子中,只能采取方法4)
(3)如果程序運行到try或catch時還需要繼續執行后面的代碼,則采取方法1(見下面的例子test0_2,該例子只能采用方法1)。
下面是測試代碼:
public class Test { public static void main(String[] args) { System.out.println("=============test1_1=================="); System.out.println("\n============test2==================="); System.out.println("\n============test2_1==================="); System.out.println("\n============test3==================="); System.out.println("\n============test3_1==================="); public static String test0() { } finally { public static String test1_1() { try{ } finally { //從eclpise報警告可看出,finally里面不建議有return語句 public static int test2() { try{ } finally { return a; public static int test2_1() { try{ } finally { //Helper類,將整數轉換成字符串 public String toString() { try{ } finally { public static Helper test3_1() { try{ } finally {
|