您好,登錄后才能下訂單哦!
所謂異常就是不正常的意思,Java中的異常指的是程序出錯了,或者說程序出現了不正常的情況。例如:ClassNotFoundException/NullPointException(類找不到異常和空指針異常)
前面我們學習集合,是從集合的繼承體系開始學的(就是從根開始學,例如:Collection和Map是集合的根),繼承體系就好比是這一塊兒知識點的骨架,把骨架搞清楚了,那么這一塊兒的知識點的脈絡就清晰了。所以我們學習異常,也是從異常的繼承體系開始學!
異常的根是Throwable(可拋出的意思),下面有兩個分支:Error和Exception。下面來給大家解釋Error和Exception.
Error:該種類的異常產生原因并不是因為程序的原因產生,而是因為機器硬件或環境原因產生,例如:電腦CPU出現硬件故障(硬件原因)、程序執行時內存溢出(環境原因)導致程序不能正常執行。
因為該種類的異常不是因為程序自身原因造成的!所有我們不研究該種類的異常!
Exception:該種類的異常是由于程序的原因造成的,所以是我們重點研究的對象!該種類的異常包括編譯期異常(非RuntimeException)和運行時異常(RuntimeException)。接下來我將會給大家講解這兩種異常!
非RuntimeException:編譯期異常,就是在編譯期間出現的代碼錯誤,例如:語法錯誤、語句忘加分號、關鍵字寫錯等。這種錯誤在Eclipse等高級開發工具體現出來的就是紅色波浪線錯誤提示。也就是說這種異常不解決,Java程序是不能被編譯成字節碼文件的!
RuntimeException:運行時異常,也就是在程序運行期間出現的異常。
假如說,咱們的程序的運行好比是咱們生活中的一次“自駕游”。
自駕游過程中可能會出現的狀況(類比程序異常):
1、開車去旅游的過程中,要通過一座橋,如果這座橋被洪水沖斷了!旅游就被迫中止!
這種情況就好比程序由于硬件/環境造成程序被迫執行終止的情況!
???????????????? 這種情況對應于咱們程序中的異常就是 Error類的異常了!
2、? 當咱們準備開車去旅游的時候,在開車之前例行檢查,發現輪胎沒氣了!這個時候必須要把輪胎打滿氣,才能出發。
出現這種情況,就好比是咱們Java異常中的編譯期異常!必須把這個異常處理好,程序才能執行!
3、? 在自駕游的過程中,開車在路上,突然發動機壞掉了,現在程序就被迫中止了,這個時候必須要修車,修好車了才能繼續行駛!
???????????????? 那這種情況就好比是咱們程序中的運行時異常!
編譯期異常必須處理,如果不處理程序就不能運行!!!
1、? 對于語法錯誤這種異常直接更正就可以了。
2、? 對于JDK定義的編譯期異常則需要我們進行顯示處理。
l? 什么是JDK自己定義的編譯期異常?
就是JDK認為可能會出現異常的代碼,而且必須要進行處理的異常就是JDK自定義的編譯異常。該情況下,代碼是沒有語法錯誤的,但eclipse會報錯!有異常的代碼會有紅色波浪線標注!如下圖所示
l? 異常的顯示處理方案?
a、? 方法聲明的時候通過throws聲明該方法中可能存在的異常。(自己不對異常進行處理,交給調用者進行處理)
b、? 對異常代碼塊通過try…catch的方式進行捕獲并處理。
兩種異常處理方案添加如下圖所示:
運行時異常可以不用處理,如果不處理,程序可以運行,但在運行的過程中,遇到運行時異常,程序就會拋出異常,并且終止程序的運行!
如下圖所示:
運行時異常和編譯期異常的解決方案一樣都有兩種,但throws的異常解決方案對運行時異常來說形同虛設!寫了等于沒寫!
只要用try…catch方式對異常進行處理了,無論該異常是編譯期異常還是運行時異常該異常代碼之后的代碼都可以執行!如果沒有用try…catch進行處理,那么異常出現之后的代碼就不會執行。jvm會在異常出現的位置,把異常封裝成一個異常對象拋出方法之外,如果調用該方法的方法也沒有處理,那么就接著拋,如果一直沒有處理,那么最終會把異常拋給JVM。JVM收到異常之后,會把程序終止,并且打印異常對象的相關信息!
未完待續。。。。。
如果想和作者交流或者想學Java,歡迎加入qq交流群:576159719
如果覺得好記得點贊啊!O(∩_∩)O哈哈~
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。