自定义受检异常类需继承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项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
public class InsufficientBalanceException extends Exception {
public InsufficientBalanceException(String message) {
super(message);
}
public InsufficientBalanceException(String message, Throwable cause) {
super(message, cause);
}
}
注意:super(...) 调用父类对应构造方法即可,无需额外逻辑;编译器不会自动生成这些构造方法,必须手动编写。
在方法中使用该异常
由于是受检异常,方法签名中必须用 throws 声明,调用方也必须处理(try-catch 或继续上抛):
public void withdraw(double amount) throws InsufficientBalanceException {
if (amount > balance) {
throw new InsufficientBalanceException("余额不足,当前余额:" + balance);
}
balance -= amount;
}
命名与使用建议
- 类名以
Exception结尾,语义清晰(如InvalidInputException、ResourceLockedException) - 避免空参构造方法(除非有明确需求),否则容易丢失关键错误上下文
- 不要继承
RuntimeException——那样就变成运行时异常,不再属于受检异常
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










