自定义异常
约 378 字大约 1 分钟
2025-07-15
当需要在 Java 代码中抛出异常时,应优先考虑使用 Java 标准库中已定义的异常类型。例如,当参数检查不合法时,应该抛出 IllegalArgumentException
。
static void process1(int age) {
if (age <= 0) {
throw new IllegalArgumentException();
}
}
Java 标准库中常见的异常类型如下:
在一个大型项目中,为了更好地组织和管理异常,可以自定义新的异常类型。但需要注意的是,要保持一个合理的异常继承体系。
4.1 根异常
一个常见的做法是自定义一个 BaseException
作为“根异常”,然后,派生出各种业务类型的异常。BaseException
需要从一个合适的 Exception
派生,通常建议从 RuntimeException
派生。这样做的好处是,自定义的异常将成为 unchecked exception,可以避免强制性的 try...catch 块。
public class BaseException extends RuntimeException {
}
4.2 业务异常
其他业务类型的异常可以从 BaseException
派生,例如:
public class UserNotFoundException extends BaseException {
}
public class LoginFailedException extends BaseException {
}
...
4.3 构造方法
自定义的 BaseException
应该提供多个构造方法,以方便在不同场景下使用:
public class BaseException extends RuntimeException {
public BaseException() {
super();
}
public BaseException(String message, Throwable cause) {
super(message, cause);
}
public BaseException(String message) {
super(message);
}
public BaseException(Throwable cause) {
super(cause);
}
}
这些构造方法实际上与 RuntimeException
的构造方法相对应。可以使用 IDE 快速生成子类的构造方法。