如果你在寫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再執行後面的一段。...