题目需求:
- 定义Person类,包含name与age两个成员变量;
- 在Person类的有参数构造方法中,进行年龄范围的判断,若年龄为负数或大于200岁,则抛出NoAgeException异常,异常提示信息“非法年龄数值”;
- 在测试类中,调用有参数构造方法,完成Person对象创建,并进行异常的处理。
代码实现:
1、定义一个Person实体类
package com.cover.day7;
public class Person {
private String name;
private int age;
public Person() {
}
public Person(String name, int age) throws NoAgeException{
if(age<0||age>200) {
throw new NoAgeException("非法年龄数值");
}else {
this.name = name;
this.age = age;
}
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
}
2、因为要抛出自定义的异常处理,所以就需要写一个异常类,且继承Exception的异常父类
package com.cover.day7;
public class NoAgeException extends Exception{
private static final long serialVersionUID = 1L;
public NoAgeException() {
}
public NoAgeException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
super(message, cause, enableSuppression, writableStackTrace);
// TODO Auto-generated constructor stub
}
public NoAgeException(String message, Throwable cause) {
super(message, cause);
// TODO Auto-generated constructor stub
}
public NoAgeException(String message) {
super(message);
// TODO Auto-generated constructor stub
}
public NoAgeException(Throwable cause) {
super(cause);
// TODO Auto-generated constructor stub
}
}
3、要想知道成功与否,那么就写个测试类检测一下吧!
(1)当年龄插入在正常范围的时候:
package com.cover.day7;
public class PersonTest {
public static void main(String[] args) {
try {
Person person = new Person("张三",160);
System.out.println(person);
} catch (NoAgeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
结果图如下:
(2)当年龄插入超出范围,即满足抛出异常的时候:
package com.cover.day7;
public class PersonTest {
public static void main(String[] args) {
try {
Person person = new Person("张三",210);
System.out.println(person);
} catch (NoAgeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
结果图如下: