用異常來處理錯誤。捕獲異常最佳的時候應該是程序編譯的時候,也就是程序運行之前,但是不是所有的錯誤都能在編譯的時候被發現,有些問題只有到程序運行的時候才能被處理,他們要通過某種方式,讓引發問題的代碼將適當的信息傳給那些知道該怎么處理這些問題的程序。
基本異常 異常條件是一種能阻止正在運行的方法或其某一部分繼續運行下去的問題。 把異常條件同普通問題區分開來,這點很重要,遇到普通問題的時候,你在 當前的運行環境下有足夠的信息來處理這個困難,對于異常條件,由于你得不到 足夠得用以處理這個問題得信息,因此不能在當前得運行環境下繼續運行下去, 你只能跳出當前得運行環境,并且把問題交到上層得運行環境,這就是拋出異常的 時候所發生的事情。
當你拋出異常對象的時候,首先會象創建其他java對象那樣,創建一個異常對象, 在堆里,用new ,然后停下當前的執行路徑,再將異常對象的reference從當前的運行 環境中彈出去,現在異常處理機制開始接管程序了, 創建自己的異常
異常說明
異常說明屬于方法聲明的一部分,要列在參數表的后面。 異常說明要用throws關鍵詞語,后面跟上所有可能拋出異常類型的清單。
捕捉任意類型的異常
要想創建一個“能處理任意類型異常的”異常處理程序是完全可能的,要做到這點, 你就必須去捕捉異常的基類Exception,
由于Exception只是那些跟程序員有關的異常類的基類,因此你不能從它那里得到更多的 關于異常的具體信息,不過你也可以調用Exception的基類Throwable的方法,
String getMessage()
String getLocalizedMessage()
String toString()
void printStackTrace() void printStackTrace(PrintStream) void printStackTrace(java.io.PrintWriter)
Throwable fillInStackTrace()
用finally進行清理
你會時常碰到”無論try區塊有沒有拋出異常“,程序都必須執行的代碼。一般來說 這些代碼都是執行恢復內存之外的操作的(因為恢復內存是垃圾回收器的活) 當你需要把內存以外的東西恢復到原先狀態的時候finally就顯得必要了。