java基礎1:異常

來源:互聯網
上載者:User

標籤:異常   javase   

關於Java基礎的文章,我覺得寫得還可以,以前發在了我其它的部落格了,肯定是原創,現在再分享給大家出來。

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


 經常寫程式的人對try...catch...finally語句肯定是不陌生的了。但是好多人總對異常搞不太清楚,不知道這個異常什麼意思,不知道為什麼用這個異常處理,這篇部落格為大家從本質上剖析一下java中的異常處理的工作原理。

 一、定義

  在《java編程思想》中這樣定義異常:阻止當前方法或範圍繼續執行的問題。

  這是書面上的語言,翻譯成我們自己的語言其實就是程式運行出現了問題。具體一點說就是程式運行出現了問題,可能會導致程式運行機制。所以就要通過拋出異常的方式告訴開發人員哪裡出現了問題。

 二、異常體系

  1、既然產生了問題就要解決問題,就像是人生病了要對症下藥一樣,java中同樣給我們一系列的異常處理類。那麼這些類要如何區分?

    總的來說,java中的異常有兩種,一種是Error,一種是Exception。

    error一般不可以處理也叫錯誤,Exception一般可以處理。

  2、Exception分類

   而Exception又可以分兩類,一類是運行時異常,一類是編譯時間異常。

   a.運行時異常:

   都是RuntimeException類及其子類異常,如NullPointerException(null 指標異常)、IndexOutOfBoundsException(下標越界異常)等,這些異常是不檢查異常,程式中可以選擇捕獲處理,也可以不處理。這些異常一般是由程式邏輯錯誤引起的,程式應該從邏輯角度儘可能避免這類異常的發生。

       運行時異常的特點是Java編譯器不會檢查它,也就是說,當程式中可能出現這類異常,即使沒有用try-catch語句捕獲它,也沒有用throws子句聲明拋出它,也會編譯通過。

       b.非運行時異常 (編譯異常):

  是RuntimeException以外的異常,類型上都屬於Exception類及其子類。從程式文法角度講是必須進行處理的異常,如果不處理,程式就不能編譯通過。如IOException、SQLException等以及使用者自訂的Exception異常,一般情況下不自訂檢查異常。

注意:java中Exception和Error的子類名都是以父類名作為尾碼。

 三、自訂異常類

既然java中的異常處理都是調用預先建好的類,那麼我們可不可以自訂異常類呢?答案是肯定的。

 1 class CeshiException extends Exception 2 { 3     CeshiException() 4     {} 5  6      7     CeshiException(String msg) 8     { 9         super(msg);10     }11 }
 四、異常處理原則

  1.函數內容如果拋出需要檢測的異常,那麼函數上必須要聲明,否則必須在函數內用try...catch捕捉,否則編譯失敗。

  2.如果調用到了聲明異常的函數,要麼try...catch要麼throws,否則編譯失敗。

 

  3.一個功能如果拋出了多個異常,那麼調用時,必須有對應多個catch進行針對性的處理。內部有幾個需要檢測的異常,就拋幾個異常,拋出幾個,就catch幾個。

 五、異常處理機制

在 Java 應用程式中,異常處理機製為:拋出異常,捕捉異常。
1、拋出異常:當一個方法出現錯誤引發異常時,方法建立異常對象並交付運行時系統,異常對象中包含了異常類型和異常出現時的程式狀態等異常資訊。運行時系統負責尋找處置異常的代碼並執行。

2、捕獲異常:在方法拋出異常之後,運行時系統將轉為尋找合適的異常處理器(exception handler)。潛在的異常處理器是異常發生時依次存留在調用棧中的方法的集合。當異常處理器所能處理的異常類型與方法拋出的異常類型相符時,即為合適 的異常處理器。運行時系統從發生異常的方法開始,依次回查調用棧中的方法,直至找到含有合適異常處理器的方法並執行。當運行時系統遍曆調用棧而未找到合適 的異常處理器,則運行時系統終止。同時,意味著Java程式的終止。

 六、最後

一個程式的異常處理架構的好壞直接影響到整個項目的代碼品質以及後期維護成本和難度。用好異常處理才能讓我們的程式跟健壯。

java基礎1:異常

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.