专业的JAVA编程教程与资源

网站首页 > java教程 正文

自定义异常(自定义异常类)

temp10 2024-11-06 12:11:03 java教程 10 ℃ 0 评论

1 概述

为什么需要自定义异常类

自定义异常(自定义异常类)

我们说了Java中不同的异常类,分别表示着某一种具体的异常情况,那么在开发中总是有些异常情况是SUN没有定义好的,此时我们根据自己业务的异常情况来定义异常类。,例如年龄负数问题,考试成绩负数问题

在上述代码中,发现这些异常都是JDK内部定义好的,但是实际开发中也会出现很多异常,这些异常很可能在JDK中没有定义过,例如年龄负数问题,考试成绩负数问题.那么能不能自己定义异常呢

异常类如何定义

自定义一个编译期异常: 自定义类 并继承于java.lang.Exception

自定义一个运行时期的异常类:自定义类 并继承于java.lang.RuntimeException

2 自定义异常的练习

在Person类的有参数构造方法中,进行年龄范围的判断

若年龄为负数或大于200岁,则抛出NoAgeException异常,异常提示信息“年龄数值非法”

要求:在测试类中,调用有参数构造方法,完成Person对象创建,并进行异常的处理

定义一个登陆异常类NoAgeException

public class NoAgeException extends Exception {
// 无参数构造方法
public NoAgeException(){}
// 有参数构造方法
public NoAgeException(String message){
super(message);
}
}

定义Person类,在setAge方法判断传入年龄是否合法,如果不合法则抛出自定义异常并提示:你不是这里的,去你该去的地方

public class Person {
private int age;
public Person(int age) throws NoAgeException{
setAge(age);
}
public Person() {
}
public int getAge() {
return age;
}
public void setAge(int age) throws NoAgeException{
// 判断age是否大于0并小于200
if (age < 0 || age > 200){
// 抛出异常:年龄值非法
throw new NoAgeException("年龄值非法");
}
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"age=" + age +
'}';
}
}

测试类

public class ExceptionDemo {
public static void main(String[] args){
/* NoAgeException e = new NoAgeException("年龄值非法");
System.out.println(e.getMessage());*/
try{
// 创建Person对象
Person p = new Person(388);
// 调用set方法修改年龄
p.setAge(260);
System.
out.println("p = " + p );
}
catch (NoAgeException e){
System.
out.println("你不是这里的,去你该去的地方");
}
}
}

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表