一.異常的概念:java
程序在運行時,發生了咱們沒有預測的狀況,它阻止了程序按照咱們預期效果執行!數據庫
二.全部異常和錯誤的父類--(Throwable)jvm
Throwable類是Java異常類型的頂層父類,一個對象只有是Throwable類的()直接或者間接)實例,他纔是一個異常對象,才能被異常處理機制識別.JDK中內建了一些經常使用的異常類,咱們 也能夠自定義異常.函數
1.Excetion--異常指針
(1).運行時異常(RuntimeExction):在程序運行期間產生的異常.對象
01:ArithmeticException--數學異常繼承
02:InputMismatchException--輸入類型不匹配異常文檔
03:NullPointException--空指針異常.數學
(2).受查異常(checked Excetion):在程序編譯期間產生的異常.it
01:IOException--.IO異常
02:EOFException--.意外獲取文件尾端,獲取失敗
03:FileNotFoundException--文件不存在異常
04:ClassNotFoundException--類不存在異常.
2.Error--錯誤
(1):VirtualMachineError.
01:OutOMemoryError
02:StactOverFlowError.
(2):AWTError:
三.try..catch..finally
1.try的使用
(1):try代碼塊不能單獨使用,必須和catch或者finally中的一個一塊兒使用.
(2):可能發生異常的代碼.
(3):若是try代碼塊中不發生異常,有finally的狀況下,先執行finally,以後執行finally以後的代碼.
若是try代碼塊中發生異常,先去catch中匹配異常,若是匹配成功,執行對應的catch.
不然執行finally,而後程序終止!!!
2.catch的使用
(1):每個catch代碼塊都是用於捕獲並處理一個特定的異常或者是這個異常的子類!
(2):catch(ArithmeticException ex)定義了異常類型
(3):能夠同時出現多個,可是不能重複
(4):多個catch代碼塊中的異常類型書寫順序必須是從小到大
(5):咱們的異常會從多個catch代碼塊中找到一個最早匹配的,而後交給這個代碼塊處理
(6):每一個catch代碼塊中的變量都是獨立的,別的代碼塊不能訪問.
(7):若是全部的catch代碼塊都不匹配,先去執行finally,以後終止程序.
(8):若是try中沒有發生異常,則全部的catch塊被匹配.
(9):java1.7的版本中支持多個異常聲明在一個catch中.
3.finally的使用:
(1):不管發生什麼異常,finally都會執行
(2)若是try中沒有異常,可是有return,這時候會先執行finally以後執行return.
(3)若是代碼中出現System.exit(int status),那麼不會執行finally
System,exit(0),正常退出.
System.exit(非0):非正常退出.
(4)作一些程序的清理工做,關閉流,釋放數據庫的鏈接.
四:throw throws
1:throw
(1)拋出的異常類型能夠是Exception或者其子類!
(2)一條throw語句只能拋出一個異常對象.
(3)throw只能出如今方法體內
(4)對於throw拋出的異常咱們有兩種處理方式.
01:try..catch..finally
02.throws
2.throws
(1)throws聲明在方法的名稱以後.
(2)throws能夠聲明多個,每一個異常之間使用逗號隔開,
(3)throws聲明異常,表示當前方法可能出現異常,方法的調用者來處理異常
(4)若是在主函數main中舒勇throws,則由咱們的jvm來處理
五.異常鏈.
1什麼是異常鏈?
(1)異常鏈是指將捕獲的異常包裝進一個新的異常中,新異常中記錄了原始異常的信息,並從新拋出異常處理方式.
六:自定義異常:
1異常類必須是Throwable的子類
2:定義運行異常 繼承RuntimeException
3.定義受查異常 繼承Exception.
七:異常的使用原則:
1.異常只能用於非正常狀況.
2:爲異常提供說明文檔.
3.儘量的避免異常,特別是運行時異常
4:保持異常的原子性.
5.避免過於龐大的try代碼塊.
6:在catch中制定具體的異常類型
7:不要在catch塊中忽略捕獲的異常.