關於JAVA中異常處理的簡單闡釋.

---恢復內容開始---學習

這是個人一篇要在博客園發佈的隨筆,主要是簡單的歸納一下我本次所學的關於異常處理的知識。有講的不穩當的地方,或者有須要補充的,還請各位高人給指點,共同窗習,虛心求學。謝謝啦~spa

1.首先咱們來講一下有關異常的概述。設計

1.1  舉個列子:想要洗手,結果發現水龍頭停水;想要騎車回家,結果發現車胎漏氣。一樣,在軟件運行過程當中,也會遇到各類意想不到的錯誤影響程序的正常運行,咱們將出如今程序中的這些錯誤稱之爲異常。3d

下面經過一個示例來演示程序中出現異常時的運行結果:
對象

 

注:示例中的代碼在編譯時沒有任何問題,可是在運行「int b = a/0」這一行時,因爲除數爲0,因此拋出異常「 by zero」 , 致使後面的語句也沒法執行。異常一旦出現就會影響程序的運行,爲了保證程序的正常運行,咱們須要在程序中加入異常處理的代碼。blog

2.接着咱們說一下關於異常的分類.繼承

1.2  JAVA語言在設計時是按照類的層次結構來構建異常體系的,Throwable是全部異常類的祖先,該類有兩個直接子類:Error類和Exception類。博客

Error:偏差,錯誤,過失.虛擬機

Exception:例外,異議.io

其中Error指的是程序中沒法處理的錯誤。  而Exception指的是程序自己能夠處理的異常。

JAVA異常體系結構圖如圖:

本人親手繪圖。啦啦啦啦,OK,繼續正題。

下面學習的異常處理的操做主要是針對Exception類及其子類的處理,異常處理的要求是能預見執行過程可能發生的異常,而且把異常處理的功能包含在程序中。

3.JAVA異常處理機制.

3.1 使用try-catch-finally捕獲異常

捕獲異常的操做須要經過try,catch,finally關鍵字來完成,編寫代碼時須要將可能拋出異常的語句放在try代碼塊中,將針對異常處理的代碼放到catch代碼塊中。當try代碼塊中的內容發生異常時虛擬機會將異常信息封裝成一個對象傳遞到catch代碼塊中進行處理,而finally代碼塊中的語句不管是否發生異常都會執行。

try-catch-finally代碼塊的語法以下圖:

 注:try-catch-finally代碼塊中的finally部分並非異常處理時必需要加上的部分,try-catch部分能夠單獨使用。(昂...圖內也有標註呦)

 注2:若是try中的代碼沒有發生異常,則不會執行catch中的代碼,可是會執行finally中的代碼。(上述提到過:而finally代碼塊中的語句不管是否發生異常都會執行。)

若是try中的代碼發生異常,則會執行catch中的代碼,catch中的代碼塊執行完後會繼續執行finally中的代碼塊。

提醒:

(1)可能發生異常的代碼必須放入try代碼塊中程序才能正常捕獲到異常。

(2)try語句不能獨立存在,其後至少要有一個catch代碼塊。

(3)finally代碼塊不是必須存在的結構,能夠根據實際需求決定是否添加。

3.2運行時異常

常見的運行時異常:以下圖

注:運行時異常就是編譯時能夠經過,可是運行時可能發生的異常,對於常見的運行時異常咱們應該重點掌握。

3.3使用throws關鍵字拋出異常

使用throws拋出異常的思路:若是當前方法不知道如何處理該異常,該異常由上一級調用者處理;若是main()方法也不知道如何處理該異常,會把異常交給JVM處理。JVM處理異常餓方法:打印異常信息,並終止程序運行。

使用throws拋出異常的語法結構以下:

 

3.4 使用throw拋出異常

通常狀況下,程序中若是出現了異常就會自動拋出,同時JAVA也支持主動拋出異常。主動拋出異常能夠經過throw語句來實現。

throw拋出異常代碼語法結構以下:

 

 3.5 自定義異常

JAVA中的API提供的內置異常不必定總能顯示程序中發生的錯誤,爲了彌補這種缺陷咱們能夠本身定義異常來顯示程序中所發生的錯誤,那麼來如何建立和使用自定義異常呢?

自問自答中:建立自定義異常須要建立類來繼承Exception類或其子類,下面經過一個示例來演示如何將一個普通類變成異常類。

示例:

從示例中能夠看出。建立自定義異常能夠經過繼承Exception類來實現,自定義異常一樣也能夠在程序中使用throw關鍵字拋出。

下面經過一個示例來演示拋出自定義異常類MyException。

示例:

本次小結:

a.  Throwable類是全部異常類的祖先,Throwable類有兩個直接子類Error類和Exception類。

b.  Exception是指程序在正常執行時所發生的能夠捕獲異常處理的異常。

c.  Error指的是程序運行時不能捕獲且沒法解決的錯誤。

d.  Java的異常處理機制有兩種:一種是使用try-catch-finally語句捕獲處理異常;另外一種實在方法聲明部分使用throws關鍵字拋出異常。

e.  Java中的異常分爲兩大類檢查時異常和運行時異常。檢查時異常都屬於Exception類的直接子類或間接子類(RuntimeException類和其餘子類外),運行時異常都屬於RuntimeException類的直接子類或間接子類。

f.  建立自定義異常須要繼承Exception類或其子類。

 

 

好了,今日就到這裏了,參觀到此結束。

---恢復內容結束---

相關文章
相關標籤/搜索