總結_java異常機制

一.概述
       異常是程序運行過程中出現的錯誤。是Java語言健壯性的一個重要體現。
       Java把異常當作對象來處理,並定義一個基類java.lang.Throwable作爲所有異常的超類。 在Java API中已經定義了許多異常類,這些異常類分爲兩大類,錯誤Error和異常Exception。
        Error是程序無法處理的錯誤,比如OutOfMemoryError、ThreadDeath等。這些異常發生時, Java虛擬機(JVM)一般會選擇線程終止。
        Exception是程序本身可以處理的異常,這種異常分兩大類運行時異常和非運行時異常。 程序中應當儘可能去處理這些異常。

二.兩種異常
        實際編程中,都是圍繞着兩種異常展開的。

1.RuntimeException
        運行時異常,略奇怪的是,它是Exception的子類,但作用和捕獲的機制完全不同。注意:這正是java異常機制的模糊地帶,也是使用好java異常的關鍵
        RuntimeException是爲了一些很基礎的異常而出現的。比如,一個人走路,不知何時可能被絆倒。比如,new一個int數組長度爲2,main方法中要求用戶輸入數字,然後把數字複製給數組;如果用戶輸入了3個數字,則出現ArrayOutOfBoundException。
        這些異常太基礎、常見,有太多方法的實現都可能導致這些異常。如果像一般Exception一樣強制要求調用者一一捕獲,那麼可想而知,程序中會出現大量冗餘代碼。
        於是,RuntimeException可以不強制捕獲(但建議捕獲一些)。一旦觸發這些異常,程序將直接退出運行。

2.一般Exception
        也叫checkedException。特點是必須被捕獲或傳輸(throws到調用者)。總結有兩個功能:
        a.避免異常被忽視,增強程序查錯能力這也是java異常機制的核心:在編碼階段就儘可能地對出現的錯誤進行預處理,而最主要的處理方式可能就是日誌記錄了,當然返回給用戶一個相對有好的錯誤頁面也是主要原因。
        b.編程的一部分也就是在catch{......}中不再是日誌記錄或打印,而是業務邏輯代碼。這更像是一種編程技巧,把被拋出的自定義異常,相當於“返回值”,調用者catch這個自定義的異常,然後做業務邏輯處理。
        比如,用戶註冊模塊,持久層方法發現用戶名已經被使用,throw new MyException,(當然方法體throws MyException),控制器層方法catch這個異常,重繪登陸頁面,讓用戶重新輸入。這個情況很常見,一般的方法是if判斷,返回一個boolean值或int標記值;但這裏用自定義異常,可以實現同樣的功能。這有一點好處是,代碼的可讀性會略高一些,基本可以忽略不計。
                  


三.異常處理語法
        Java異常的捕獲和處理是一個不容易把握的事情,如果處理不當,不但會讓程序代碼的可讀性大大降低, 
    而且導致系統性能低下,甚至引發一些難以發現的錯誤。
        Java異常處理涉及到五個關鍵字,分別是:trycatchfinallythrowthrows
        ......
        (略)



發佈了30 篇原創文章 · 獲贊 3 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章