1. 程式人生 > >02024_自定義異常的練習

02024_自定義異常的練習

捕獲 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_自定義異常的練習