一:異常結構圖及基本概念java
Throwable類:全部異常與錯誤的超類。ui
Error類:程序沒法處理的錯誤,表示運行應用程序中較嚴重問題,不須要捕獲this
Exception類:程序自己能夠處理的異常,能夠捕獲spa
RuntimeException及其子類:能夠捕獲此異常,也能夠不捕獲。建議不捕獲。.net
非運行時異常:必須捕獲的異常。code
二 try...catch...finally對象
1 try{ 2 //監控有可能出現異常的代碼 3 }catch(Exception e){ 4 //捕獲異常後執行的代碼 5 }finally{ 6 //無論是否捕獲到異常,都要執行的代碼,經常使用於釋放資源 7 }
try...catch...finally不能單獨使用,只能使用try...catch,try...finally;try...catch...finally這三種結構blog
try...catch...finally能夠嵌套繼承
1 public class Test2 { 2 3 public static void main(String[] args) { 4 // TODO Auto-generated method stub 5 int []a={1,2,3}; 6 try{ 7 //System.out.println(a[4]); 8 System.out.println(a[0]); 9 }catch(ArrayIndexOutOfBoundsException e){ 10 e.printStackTrace(); 11 }finally{ 12 System.out.println(a[2]); 13 } 14 } 15 16 }
三:throw,throws資源
throws:用於方法體外。聲明可能拋出的全部異常信息並交給該方法的調用者處理或繼續拋出異常。
throw:用於方法體內,拋出一個具體的異常。能夠直接在方法體內捕獲異常,或者經過throws拋出異常。
1 public class Test3 { 2 3 public static void main(String[] args) throws Exception { 4 // TODO Auto-generated method stub 5 int []a={1,2,3}; 6 //System.out.println(a[0]); 7 System.out.println(a[4]); 8 } 9 10 }
四:自定義異常
在程序中使用自定義異常類,大致可分爲如下幾個步驟。
(1)建立自定義異常類。(繼承Exception或Throwable,須要時可重寫getmessage方法)。
(2)在方法中經過throw關鍵字拋出異常對象。
(3)若是在當前拋出異常的方法中處理異常,能夠使用try-catch語句捕獲並處理;不然在方法的聲明處經過throws關鍵字指明要拋出給方法調用者的異常,繼續進行下一步操做。
(4)在出現異常方法的調用者中捕獲並處理異常。
1 public class Test4 { 2 3 /** 4 * @param args 5 */ 6 public static void main(String[] args) { 7 // TODO Auto-generated method stub 8 try { 9 throw new MyException("aaa"); 10 11 } catch (MyException e) { 12 // TODO Auto-generated catch block 13 e.printStackTrace(); 14 //e.getMessage(); 15 } 16 } 17 18 } 19 20 class MyException extends Exception{ 21 String message; 22 MyException(String s){ 23 super(s); 24 } 25 /* MyException(String s){ 26 this.message=s; 27 } 28 public String getMessage(){ 29 return message; 30 }*/ 31 32 }
參考博客: