软件构造学习笔记-第十二周
本周介紹了異常以及異常的處理。Java的異常機制將處理異常的代碼整合到一個代碼塊中,而不是通過if-else進行處理,提高了代碼整體的簡潔性。同時,異常機制可以更加詳細地說明錯誤類型、引起錯誤的位置、錯誤信息,對程序健壯性十分有幫助。
異常
1.Java“異常”的分類
分為Error和Exception(又分為RuntimeException和其它Exception),其中虛線部分(unchecked exception)不需顯式catch。
2.運行時異常由程序員在代碼中處理不當造成,其它異常由外部原因造成。
3.運行時異常不應該catch,而是通過修改代碼消除。其它異常需要catch,如果不捕獲則編譯無法通過,類似于靜態類型檢查。
4.異常是為了增強程序健壯性;斷言為了增強程序正確性。
處理異常(針對checked exception)
1.當要決定采用checked exception還是unchecked exception時,看異常由誰引起的。如果客戶端代碼不能做任何補救措施,則采用uncheck exception;如果客戶端可以根據異常信息補救,則采用checked exception。
2.客戶端應該從checked exception中獲取有價值的信息,利用異常返回的信息明確操作失敗的原因。
3.checked exception是可預料但無法預防的。如果做不到這一點則使用unchecked exception。
4.兩種異常的對比
5.方法應該throws的異常種類:該方法調用的其它方法拋出了一個checked exception(從別處傳來的異常);當前方法檢測到錯誤并使用throw拋出一個checked exception(本身造成的異常)
6.捕獲異常時,按照從具體到寬泛的順序編寫catch塊
7.可以在catch塊中繼續拋出異常(為了細化異常種類),但是需要保留根異常
LSP原則下的異常
核心是子類型可以替代父類型,即聲明父類型,賦值子類型
1.如果子類型重寫了父類型的方法,那么子類型方法拋出的異常不能比父類型拋出異常的類型更寬泛。
2.子類型方法可以拋出更具體的異常,也可以不拋出異常。
3.如果父類型的方法未拋出異常,子類型方法也不能拋出異常。可以理解成未拋出異常是最具體的異常。
總結
以上是生活随笔為你收集整理的软件构造学习笔记-第十二周的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 银鳕鱼的功效与作用、禁忌和食用方法
- 下一篇: 软件构造学习笔记-第十三周