java-異常-異常捕捉及多catch情況(try-catch)
阿新 • • 發佈:2021-11-04
1 package p1.exception; 2 3 4 /* 5 * 異常處理的捕捉形式: 6 * 這是可以對異常進行鍼對性處理的方式. 7 * 8 * 具體格式是: 9 * try{ 10 * //需要被檢測異常的程式碼 11 * } 12 * catch(異常類 變數){ //該變數用於接收發生的異常物件 13 * //處理異常的程式碼 14 * } 15 * finally{ 16 * //一定會被執行的程式碼 17 * } 18 */ 19 class FuShuIndexException extendsExceptionDemo4RuntimeException /*Exception*/{//可以改繼承執行異常,就不會報編譯錯誤 20 public FuShuIndexException() { 21 // TODO Auto-generated constructor stub 22 } 23 24 FuShuIndexException(String msg){ 25 super(msg); 26 } 27 } 28 class Demo { 29 public static int method(int[] arr,int index) throwsNullPointerException, FuShuIndexException { 30 31 if (arr == null) { 32 throw new NullPointerException("沒有任何陣列實體"); 33 } 34 if (index<0) { 35 throw new FuShuIndexException("角標變成負數了"); 36 } 37 return arr[index]; 38 } 39 40} 41 42 public class ExceptionDemo4 { 43 44 public static void main(String[] args) { 45 46 int[] arr = new int[3]; 47 Demo d = new Demo(); 48 try { 49 // int num = d.method(arr,0); 50 int num = d.method(null,-30); 51 System.out.println("num="+num); 52 } catch (FuShuIndexException e) { 53 // TODO: handle exception 54 System.out.println("message:"+e.getMessage());//message:角標變成負數了 55 System.out.println("string:"+e/*.toString() 輸出語句後輸出都會變成字串*/);//string:p1.exception.FuShuIndexException: 角標變成負數了 56 e.printStackTrace();//jvm預設的異常處理機制就是呼叫異常物件的該方法 57 System.out.println("負數角標異常"); 58 } catch (NullPointerException e) { 59 // TODO: handle exception 60 System.out.println(e.toString()); 61 }/*catch(Exception e) {//多catch時父類的catch放在最下面,否則編譯失敗 62 63 }*/ 64 65 66 System.out.println("over"); 67 68 } 69 70 } 71 /* 72 log4j log for (java; ;) { 73 74 } 75 */