02024_自定義異常的練習
阿新 • • 發佈:2017-12-24
捕獲 color per 定義 顯示 private ext class 演示
1、要求
(1)定義Person類,包含name與age兩個成員變量;
(2)在Person類的有參數構造方法中,進行年齡範圍的判斷,若年齡為負數或大於200歲,則拋出NoAgeException異常,異常提示信息“年齡數值非法”;
(3)在測試類中,調用有參數構造方法,完成Person對象創建,並進行異常的處理。
2、代碼演示
(1)自定義異常類
1 class NoAgeException extends Exception{ 2 NoAgeException() { 3 super(); 4 } 5 6 NoAgeException(String message) {7 super(message); 8 } 9 }
(2)Person類
1 class Person{ 2 private String name; 3 private int age; 4 Person(String name,int age) throws NoAgeException { 5 //加入邏輯判斷。 6 if(age<0 || age>200) { 7 throw new NoAgeException(age+",年齡數值非法");8 } 9 this.name = name; 10 this.age = age; 11 } 12 //定義Person對象對應的字符串表現形式。覆蓋Object中的toString方法。 13 public String toString() { 14 return "Person[name="+name+",age="+age+"]"; 15 } 16 }
(3)測試類
1 class ExceptionDemo{ 2 public static void main(String[] args) {3 try { 4 Person p = new Person("xiaoming",20); 5 System.out.println(p); 6 } 7 catch (NoAgeException ex){ 8 System.out.println("年齡異常啦"); 9 } 10 System.out.println("over"); 11 } 12 }
3、構造函數到底拋出這個NoAgeException是繼承Exception呢?還是繼承RuntimeException呢?
(1)如果繼承Exception,必須要throws聲明,一聲明就告知調用者進行捕獲,一旦問題處理了調用者的程序會繼續執行;
(2)如果繼承RuntimeExcpetion,不需要throws聲明的,這時調用是不需要編寫捕獲代碼的,因為調用根本就不知道有問題。一旦發生NoAgeException,調用者程序會停掉,並有jvm將信息顯示到屏幕,讓調用者看到問題,修正代碼
02024_自定義異常的練習