try..return..catch..return..finally...return

至少有兩種狀況下finally語句是不會被執行的:code

(1)try語句沒有被執行到,如在try語句以前就返回了,這樣finally語句就不會執行,這也說明了finally語句被執行的必要而非充分條件是:相應的try語句必定被執行到。虛擬機

(2)在try塊中有System.exit(0);這樣的語句,System.exit(0);是終止Java虛擬機JVM的,連JVM都中止了,全部都結束了,固然finally語句也不會被執行到。it

 

public String test() {
		try {
			Object obj = null;
			if(obj.equals("123")){
				System.out.println("123");
			}
			return "try block";
		} catch (Exception e) {
			return "catch block";
		} finally {
			System.out.println("d");
			//return "finally block";
		}
	}

如上代碼:io

    先執行finally代碼塊,而後返回try或catch的return值。test

注:方法

不能在finally塊中使用return,finally塊中的return返回後方法結束執行,不會再執行try或catch塊中的return語句。co

相關文章
相關標籤/搜索