Java 自定义异常
注:建议先阅读 Java 异常分类
Java 中使用自定义异常类,一般是继承 Exception 或者它的某个子类。如果父类是 RuntimeException 或它的某个子类,则自定义异常也是未受检异常;如果是 Exception 或 Exception 的其他子类,则自定义异常是受检异常。
Java 中的一些异常类(比如 NullPointerException)其实并没有比 Throwable 这个基类多多少属性和方法,大部分类在继承父类后只是定义了几个构造方法,这些构造方法也只是调用了父类的构造方法,并没有额外的操作。
之所以定义这么多不同的类,主要是为了名字不同。异常类的名字本身就代表了异常的关键信息,无论是抛出还是捕获异常,使用合适的名字都有助于代码的可读性和可维护性。
所以,有时候我们自定义的异常也不会定义额外的属性和代码,只是继承父类,然后定义几个构造方法,调用父类的构造方法。
public class AppException extends Exception { public AppException() { super(); } public AppException(String message, Throwable cause) { super(message, cause); } public AppException(String message) { super(message); } public AppException(Throwable cause) { super(cause); } }
当然,我们也可以根据需要定义一些额外的属性和方法:
public class CustomerException extends RuntimeException { private String retCd ; // 异常对应的返回码 private String msgDes; // 异常对应的描述信息 public CustomerException() { super(); } public CustomerException(String message) { super(message); msgDes = message; } public CustomerException(String retCd, String msgDes) { super(); this.retCd = retCd; this.msgDes = msgDes; } public String getRetCd() { return retCd; } public String getMsgDes() { return msgDes; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)