02024_自定义异常的练习

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将信息显示到屏幕,让调用者看到问题,修正代码

  

原文地址:https://www.cnblogs.com/gzdlh/p/8095150.html