Java中的受檢異常

Java中的受檢異常

Java提供了三種異常類型,受檢異常(checked exception)、運行時異常(runtime exception)、錯誤(error)。那麼這受檢異常在實際開發中又有什麼最佳實踐呢?程序員

受檢異常併發

若是拋出的異常是可恢復的,同時咱們也指望API的調用者捕獲異常進行恢復處理,那麼咱們應該使用受檢異常。受檢異常會強迫API的使用者截獲異常並恢復處理,或者進行聲明繼續拋出。 工具

1.IDE工具提示須要針對受檢異常進行處理 spa

2.捕獲受檢異常並進行恢復處理 對象

3.從新聲明受檢異常blog

總而言之,對於可恢復的狀況,使用受檢異常;若是不清楚是否可能恢復,則最好使用未受檢異常。開發

雖然受檢異常是Java語言一項很好的特性,它強迫程序員處理異常,大大加強程序的可靠性。可是過度的使用受檢異常會使API使用很是不方便,調用者必須在catch塊中處理全部的受檢異常,或者調用者必須聲明拋出這些受檢異常。同步

受檢異常恢復的原子性io

對於受檢異常來講,咱們指望在執行某個操做失敗的時候,對象仍然保持在一種定義良好的可用狀態之中,這樣咱們就能夠從異常中進行恢復。通常而言,失敗的方法調用應該使對象保持調用以前的狀態,即受檢異常的原子性。exception

咱們有如下方式能夠實現受檢異常的原子性

1.使用不可變對象

   若是對象不可變,那麼在對象實例化的時候就肯定了其狀態,之後不再能發生改變了,因此方法的執行就不能修改對象的狀態,只能經過新建對象做爲返回參數。

2.提早檢查參數的有效性

   在執行可變對象的方法以前檢查參數的有效性,是的對象的狀態被修改以前,先拋出適當的異常,這是可變對象獲取受檢異常原子性最多見的方法。

3.編寫攔截操做失敗並回滾對象狀態的恢復代碼。

4.如今臨時拷貝的對象上執行操做,當操做成功後再用臨時拷貝中的結果代替對象的內容。

雖然通常狀況下你們都但願實現受檢異常的原子性,可是並不是老是能夠作到的,例如缺乏同步機制,併發修改同一個對象的狀態。即便有時能夠輕鬆實現受檢異常的原子性,可是其可能會險種的增長開銷和複雜性,並不必定是人們所指望的。

相關文章
相關標籤/搜索