java的異常處理機制要點總結

 
 一,異常類的繼承層次結構
 所有的異常都是由Throwable繼承而來,在下一層立即被分解被兩個分支:Error和Exception
 Error類層次結構描述了Java運行時系統的內部錯誤和資源耗盡錯誤,應用程序不能拋出這種類型的對象。如果出現了這樣的內部錯誤,除了通知給用戶,並盡力使程序安全地終止之外,再也無能爲力了。
 Exception層次結構是我們應該重點關注的類,
 異常的繼承結構
 
 1.try-catch捕獲異常類型的順序:
 由子類到父類的順序,不能錯。
 在最後一個catch語句中捕獲Exception異常,父類異常在子類的下面,順序不能錯,否則子類異常沒有機會被處理。
異常處理方式:
 2.try-catch捕獲異常和throw拋出異常的區別:
 (1)try-catch 捕獲,異常由被調用者自己處理。
 (2)throw拋出異常,異常由調用者處理,誰調用誰處理, 用throw通知外界,告知方式就是throw異常,用於catch語句塊中
 注意:父親壞了,兒子不能再壞
 原則:參數原因異常應該拋出,自身原因由自己處理
 throws關鍵字:
 聲明方法的同時聲明可能拋出的異常類型,通知調用者強制捕獲。
Throw和throws應該結合使用:
 Throws可以在方法聲明時聲明拋出的異常。原則上throws聲明的異常,一定要在該方法中拋出。否則沒有意義。相反的,若方法中我們主動通過throw拋出一個異常,應該在throws中聲明該種類異常,通過外界捕獲。
  Java異常分爲:
  (1)運行時異常
 (2)可檢查異常
RuntimeException:
 若方法中拋出該類異常或其子類,那麼聲明方法時可以不在throws中列舉該類拋出的異常。不是RuntimeException類型的異常必須列舉該類拋出的異常。
 NullPointerException/IndexOutOfBoundsException
拋出非RuntimeException異常,這類異常稱爲檢查異常
編輯器在編譯該類時若發現方法中拋出了此類異常。那麼一定會檢查方法聲明是否含有throws這類異常的聲明,若沒有就判定爲語法錯誤,編譯不通過。
非RuntimeException—->必須檢查
Main方法不拋出異常,因爲mian方法後的Throws異常會交給JVM處理,而JVM會直接關閉程序。
Throws和Throw的區別(筆試常考)
 (1)throw是語句拋出一個異常。
語法:throw (異常對象);
throw e;
 (1)throws是方法可能拋出異常的聲明。(用在聲明方法時,表示該方法可能要拋出異常)
語法:(修飾符)(方法名)([參數列表])[throws(異常類)]{……}
public void doA(int a) throws Exception1,Exception3{……}
Java的異常處理機制:
 Jvm在運行程序時,一旦在某行代碼運行時出現了錯誤,jvm會創建這個錯誤的實例,並拋出。這時jvm會檢查出錯代碼所在的方法塊中是否有try捕獲,若有,則檢查catch塊是否有可以處理該異常的能力。若沒有,則將該異常拋出給方法的調用者。以此類推,(自動向上拋出???)直到拋至main方法仍沒有解決。那麼jvm會終止該程序。
 重寫方法時的異常處理:
如果使用繼承時,在父類的某個方法上宣告了throws某些異常,而在子類中重新定義該方法時,可以:
 (1)不處理異常,重新定義時不設定throws
 (2)可僅throws父類中被重新定義的額方法上的某些異常
 (3)可throws被重新定義的方法之上的異常的子類別
不可以:
 (1)throws出額外的異常
 (2)throws被重新定義的方法之上的異常之父類
Throwable類
程序產生的異常是Throwable類 或其子類的實例對象
Throwable有兩種子類: Error類和Exception類
Exception子類:
 (1)ArithmeticException:數學運算時產生的異常
 (2)ArrayIndexOutBoundException:數組索引值小於0或者數組邊界產生的異常
(3)ArrayStoreException:保存數組元素的類型不符合
(4)IllegalArgumentException:方法調用時,參數類型不同
(5)NullPointException:對象值爲空

Try…catch…finally與直接throw的區別:
(1)try catch是直接處理,處理完成之後程序繼續往下執行,
(2)throw則是將異常拋給它的上一級處理,程序便不往下執行了。不會再繼續執行finally中的字句。

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