Skip to content
目录概览

Java自定义异常

在Java中,异常是指在程序运行过程中出现的不可避免的错误。Java内建有一些异常类,例如NullPointerException,ArrayIndexOutOfBoundsException等等。然而,在一些特殊场景下,我们需要自己定义异常类来更好地处理异常情况。

1. 定义自定义异常类

定义自定义异常类需要继承自Exception类。

例如,我们定义一个年龄异常类,用于处理输入年龄小于0或大于120的情况,代码如下:

java
public class AgeException extends Exception {
    public AgeException(String message) {
        super(message);
    }
}

在这个自定义异常类中,我们只定义了一个构造方法,传入一个字符串型变量message,调用父类Exception的构造方法将message作为参数传入。通常情况下,自定义异常类都只需要重写构造方法即可。

2. 抛出自定义异常

当需要在程序中出现异常时,我们需要实例化之前定义的年龄异常类并抛出。以校验年龄的方法为例:

java
public void checkAge(int age) throws AgeException {
    if (age < 0 || age > 120) {
        throw new AgeException("年龄输入不合法");
    }
}

这个方法会抛出一个AgeException异常,当输入参数age不合法时,系统就会在这里抛出异常。

3. 处理自定义异常

在刚刚的checkAge方法中,已经定义了抛出AgeException异常。而抛出异常之后,需要有相应的代码处理异常。下面是一个处理自定义异常的代码示例:

java
int age = -1;
try {
    checkAge(age);
} catch (AgeException e) {
    System.out.println(e.getMessage());
}

在上述代码中,我们首先定义了一个age变量,这个变量被设置为-1,这当然是错误的年龄。然后我们调用checkAge方法,当传入的年龄是-1时,这个方法就会抛出AgeException异常。在catch代码块中,我们捕获了这个AgeException异常,并通过e.getMessage()得到异常输出的信息。在这里,只会输出一句“年龄输入不合法”。

当然,我们可以根据业务的实际情况定义自己的输出信息。

总结

自定义异常非常有用,它能够帮我们更好地捕捉异常情况,从而使程序更加健壮。通过定义自己的异常类,我们能够实现更为规范的异常处理方式,并能够将程序异常进行更好地维护和管理。

在自定义异常时,我们需要重写父类的构造方法,根据需求传入相应的参数,通常只需要传入一个String类型的异常信息即可。而在方法中抛出自定义异常时,需要实例化刚刚自己定义的异常类。最后,在catch代码块中处理自定义异常,输出相应的异常信息。