自定义受检异常类需继承Exception并提供String参数构造方法;必须声明throws且调用方须处理;类名应以Exception结尾,避免继承RuntimeException。

自定义受检异常类需继承 Exception,并提供至少一个带 String 参数的构造方法,让调用方能传入有意义的错误信息。
继承 Exception 并声明构造方法
Java 中所有受检异常(checked exception)都必须是 Exception 或其子类(且不能是 RuntimeException 的子类)。自定义时直接继承 Exception 即可,通常建议提供以下两个构造方法:
-
public MyCheckedException(String message):用于抛出时携带提示信息 -
public MyCheckedException(String message, Throwable cause):支持链式异常(如包装底层异常)
示例代码
下面是一个典型的自定义受检异常类:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
public class InsufficientBalanceException extends Exception {
public InsufficientBalanceException(String message) {
super(message);
}
public InsufficientBalanceException(String message, Throwable cause) {
super(message, cause);
}
}
注意:super(...) 调用父类对应构造方法即可,无需额外逻辑;编译器不会自动生成这些构造方法,必须手动编写。
立即学习“Java免费学习笔记(深入)”;
在方法中使用该异常
由于是受检异常,方法签名中必须用 throws 声明,调用方也必须处理(try-catch 或继续上抛):
public void withdraw(double amount) throws InsufficientBalanceException {
if (amount > balance) {
throw new InsufficientBalanceException("余额不足,当前余额:" + balance);
}
balance -= amount;
}
命名与使用建议
- 类名以
Exception结尾,语义清晰(如InvalidInputException、ResourceLockedException) - 避免空参构造方法(除非有明确需求),否则容易丢失关键错误上下文
- 不要继承
RuntimeException——那样就变成运行时异常,不再属于受检异常

















