異常的定義
在《java編程思想》中這樣定義異常:阻止當前方法或作用域執行的問題。也可以這樣說,異常就是某種意義
上的錯誤,就是問題,它可能會導致程序失敗。
異常的分類
1、Throwable:它是java語言中所有錯誤或異常的超類。它有兩個子類:Error和Exception。
2、Error:用於指示合理的應用程序不應該試圖捕獲的嚴重問題。這種情況是很大的問題,大到不能處理了,
所以聽之任之就行了,不用管它。例如:VirtualMachineError,當java虛擬機崩潰或用盡了它繼續操作所需的資源
時,拋出該錯誤。就算這個錯誤存在,也不用處理,直接交給JVM吧,沒有比它更專業的了。
3、Exception:他指出了合理的應用程序想要捕獲的條件。Exception又分爲兩類:CheckedException和
UncheckedException(通常也叫RuntimeException)。二者的主要區別是:CheckedException需要用try...catch...
顯示捕獲,而UncheckedException不需要捕獲。
捕獲異常
1、try是嘗試運程代碼塊,如果有異常會被隨後的catch捕獲,異常發生以後代碼不執行。
2、catch代碼塊是異常處理代碼,需要提供合理的處理。
1)異常的處理與具體的業務邏輯有關
2)可以寫多個catch處理一系列異常,但是要注意:異常的大小關係,大類型的放到後面處理。
3、有的時候直接catch(Exception)粗粒度處理異常,代碼簡潔,語義含糊,根據業務邏輯適當選用。
4、finally代碼塊,不管是否出現異常,總會執行的代碼塊。
1)finally常用來處理現場的清理。
5、處理異常基本原則:能夠底層處理的儘量底層處理,但是如果不能處理,必須拋出到調用者。不應該簡單
的拋棄。
6、異常捕獲再拋出,是一種把底層異常進行封裝,轉換爲另外一種異常類型。
7、建議在捕獲到異常時候使用e.printStackTrace(),打印到控制檯。
1)輸出內容是:出現異常時候的方法調用堆棧。
2)一般情況下,凡是捕獲異常代碼都輸出e.printStackTrace()。