finally中的return執行順序

2021-10-08 14:25:44 字數 654 閱讀 4231

直接給出結論,無論如何 finally 塊都會執行,所以 finally 塊的 return 語句才是最終的返回語句。

我們看下面的**塊,這是乙個典型的檔案寫操作:

filewriter filewriter = null;

trycatch

(ioexception e)

finally

catch

(ioexception e)

}

try-catch-finally的一般執行順序為,執行try塊,如果遇到異常,執行catch塊,再執行finally塊;否則直接執行finally塊。具體細節在這裡不贅述。現在問題是在 try-catch-finally 或者 try-finally 這兩種結構中,執行 try 塊的 return 語句是否能立即返回。

private

static

intparseint

(string s)

finally

}

按照一般理解,首先執行 try 塊,由於沒有遇到任何異常,所以直接執行 return 語句,此時方法應該直接返回 s 中的數字。我們可以呼叫上述方法試一試,最終的返回值是 0 .顯然這裡是執行了 finally 塊中的**,覆蓋了原先的返回值。

Java中finally與return的執行順序

finally不會執行的兩種情況 1.finally對應的try塊語句還沒被執行到就返回了2.finally對應的try塊語句中有system.exit 這樣的語句 finally塊的語句在try或catch中的return語句 執行之後返回之前執行 若finally裡也有return語句,則 覆蓋...

java中finally和return的執行順序

注意 return的位置。從這幾個例子中可以看到,如果try之前沒有有條件的return,則try.catch finally語句塊中的語句都是順序執行 如果try中或者catch中 有return語句,那麼先執行該return,然後執行finally,如果finally中也有return,該出的返...

不能在finally塊中return

try catch塊中永遠返回finally中return的值 錯誤 static boolean f finally 錯誤分析 在這個應用場景中,不要用return來退出finally語句塊,因為finally語句塊都會被執行到,這樣try程式塊中執行正常也會在finally中退出,不會再回到tr...