深入java 自定義異常以及常用

上一篇文章總結了java的異常用法,常見得java異常以及例子說明。這一篇文章我們繼續深入,瞭解自定義java異常以及常用的異常記錄工具。更多的源代碼請訪問我的github:https://github.com/yangsheng20080808/deepIntoJava

原創不易,轉載請聲明出處。

本文分爲2大部分

  • 爲什麼沒必要自定義編譯異常CheckedException
  • 自定義java異常
  • 常用的異常記錄工具

爲什麼沒必要自定義編譯異常CheckedException

當我們開始熟練的開始使用java異常的時候,其實這個時候,我們還可以定義自己的異常,我們最好只定義繼承Exception和RuntimeException(待會跟大家說一下爲什麼也不需要去繼承RuntimeException),當然,編譯異常你也可以繼承,但是你繼承了編譯異常也沒有用呀,因爲編譯異常,是我們拋出的父類對象,捕捉的時候只會匹配他和他的父類,不會匹配他的子類:
舉例說明吧:
這裏寫圖片描述
大家應該看得很清楚,MyException(子)是FileNotFoundException(父)的子類,但是我們在filter = new FileReader(path);的時候,拋出的是MyException的父類FileNotFoundException的對象,大家應該都知道強制向下造型是有風險的,當然,JVM這裏當然也不可能讓你向下造型去匹配。
我們添加獲取的目標:
這裏寫圖片描述
運行結果:
這裏寫圖片描述
我們只匹配上了我們的父類對象。而沒有匹配上我們的MyException。

自定義java異常

爲什麼要自定義java異常
我覺得是從程序的健壯性和友好性出發的,我們自定義的異常,可以在程序運行的時候給我們用戶更好的異常提示,而且這些異常是符合我們自己定義的場景。
直接舉例說明(我覺得真的有用的繼承是Exception和RuntimeException:但是一般RuntimeException是程序在運行的時候:要麼是系統異常。無法處理。例如網絡問題。我們根本沒有辦法處理。那有什麼必要去處理呢?!!!):
最後:我們只有Exception和Throwable是有必要去複寫的。
這裏寫圖片描述
運行結果:
這裏寫圖片描述

常用的日誌記錄工具

我們可以使用一些第三方的日誌工具去記錄程序中出現的異常:
推薦大家幾個工具,具體怎麼使用,以後再單獨寫一篇文章總結:
log4j,log4j2

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章