finally最終執行塊和throw與throws

2021-09-21 05:26:00 字數 1893 閱讀 2534

如果你在寫try catch的時候需要一段**不管出現錯誤或者不出現錯誤,都執行這段**的話,就在最後面加上

finally

最終執行塊,而且這個

finally

要寫在最後面,並且乙個

try catch

只能寫乙個

finally

,finally

後面不可以再寫

catch

。例如:

可以看到出現了異常進到了相對應的陷阱之後,這個finally依然會執行。適合用於寫關閉資源的**,因為

finally

無論如何都會執行,解決了以前

try catch

的bug。

throw:

throw用於丟擲異常物件,這個異常可以是系統定義的,也可以是自己定義的。例如:

構建異常物件被throw丟擲後就會進入到對應的異常陷阱裡,執行陷阱裡的**。如果沒有相對應的陷阱就會往外拋,直到拋到

main

方法外位為止。

例如在封裝屬性裡就可以用到throw,因為當經過判斷條件為

false

就可以丟擲乙個異常來提示客戶操作有問題。例如:

這句throw後面是不可以再寫**的了,如果想在這之後執行一些**可以使用

try catch

裡的finally

。例如:

throws是方法可能丟擲異常的宣告。

(用在宣告方法時,表示該方法可能要丟擲異常

),呼叫該方法時需要使用

try catch

處理這個異常或者繼續丟擲這個異常,不然就會直接報語法錯誤

(繼承於

runtimeexception

類的除外

)。例如:

如果丟擲的是

runtimeexception或繼承於這個類之下的異常

就不會要求對異常進行處理。例如:

方法丟擲異常:

方法就是任務的封裝,或者功能的封裝,如果一旦出現問題,無論是引數合法性還是呼叫別的方法有異常,都必須反映出去,不可以處理後沒有任何提示,沒有任何提示的話使用者也無法得知自己的操作是否是正確的。

throws可以丟擲多個異常宣告,只需要在異常之間用逗號隔開就可以了。例如:

異常的丟擲機制主要就是用於提醒客戶的操作是否有問題,或者**的**執行時出現了異常,所以異常陷阱裡也必需要寫有一些**來提示使用者,不能什麼都不寫,什麼都不寫出現錯誤了,也不知道是怎麼回事,這就失去了異常處理的意義了。

何時執行Java語言的finally塊

最近看到乙個非常有意思的 public class testexception public static intfoo catch arithmeticexception e finally 問 程式的輸出是什麼?分析 程式會丟擲arithmeticexception異常,因此會執行到catch塊...

return和finally執行順序

public class test public static int tt catch exception e finally system.out.println finally system.out.println come here return b 執行結果 yesb 25 111 fin...

finally和return的執行順序

當finally呼叫的任何可變api,會修改返回值 當finally呼叫任何的不可變api,對返回值沒有影響。總結一下 其實return與finally並沒有明顯的誰強誰弱。在執行時,是return語句先把返回值寫入但記憶體中,然後停下來等待finally語句塊執行完,return再執行後面的一段。...