異常
異常指的是運行期出現的錯誤,也就是當程序開始執行之後執行期出現的錯誤 1檢查性異常:最具表明的檢查性異常是用戶錯誤或問題引發的異常,這是程序員沒法預見的。例如要打開一個不存在文件時,一個異常就發生了,這些異常在編譯時不能被簡單地忽略。 2運行時異常: 運行時異常是可能被程序員避免的異常。與檢查性異常相反,運行時異常能夠在編譯時被忽略。 3錯誤: 錯誤不是異常,而是脫離程序員控制的問題。錯誤在代碼中一般被忽略。例如,當棧溢出時,一個錯誤就發生了,它們在編譯也檢查不到的。java
空指針異常 NullPointerException
數組下標越界異常 ArrayIndexOutOfBoundsExecption 類型轉換異常 ClassCastException
算數異常 ArithmeticException程序員
異常方法 下面的列表是 Throwable 類的主要方法:數據庫
檢查異常: 文件異常 IOException SQL異常SQLException 拋出異常:java程序執行過程當中發生異常事件,能夠生成一個異常類,該異常類封裝了異常事件的信息並將提交給java運行時系統,系統默認直接打印出來。 捕獲異常:java運行時系統收到異常對象時,會尋找能處理這異常的代碼並把當前異常對象交於處理,這一過程稱爲捕獲異常。數組
try-catch 以及 try-catch-finally
Try{ //一些會拋出異常的方法 }catch(Exception e){ //處理該異常的代碼塊 從子類到父類 }catch(Exception2 e){ }finally { //最終將要執行的代碼 } finally 關鍵字用來建立在 try 代碼塊後面執行的代碼塊。 不管是否發生異常,finally 代碼塊中的代碼總會被執行。spa
throw throws 若是一個方法沒有捕獲一個檢查性異常,那麼該方法必須使用 throws 關鍵字來聲明。throws 關鍵字放在方法簽名的尾部。 也可使用 throw 關鍵字拋出一個異常,不管它是新實例化的仍是剛捕獲到的。 聲明將要拋出的任何異常(聲明) Public void 方法名(參數列表) throws 異常類別{ //調用拋出異常的方法或者: throw new Execption(); } 聲明自定義異常 在 Java 中你能夠自定義異常。編寫本身的異常類時須要記住下面的幾點。 全部異常都必須是 Throwable 的子類。 若是但願寫一個檢查性異常類,則須要繼承 Exception 類。 若是你想寫一個運行時異常類,那麼須要繼承 RuntimeException 類。指針
通用異常 在Java中定義了兩種類型的異常和錯誤。 JVM(Java虛擬機) 異常:由 JVM 拋出的異常或錯誤。例如:NullPointerException 類,ArrayIndexOutOfBoundsException 類,ClassCastException 類。 程序級異常:由程序或者API程序拋出的異常。例如 IllegalArgumentException 類,IllegalStateException 類。對象
異常總結 1 在運行異常程序的時,採用邏輯去合理規避同時輔助try-catch處理 2 在多重catch 塊後面,能夠加上一個catch(Exception)來處理可能被遺漏的異常 3 對於不肯定的代碼,也能夠加上try-catch,處理潛在的異常 4 儘可能去處理異常,切忌只是簡單的去調用printStackTrace()去打印輸出 5 具體如何處理異常,要根據不一樣的業務需求和異常類型去決定 6 儘可能添加finally 語句去釋放佔用的資源 (數據庫) 7重寫方法須要拋出與原方法所拋出異常類型一致的異常 或者不拋出異常blog