Java自定义异常

Java标准库定义的常用异常包括:

当我们在代码中需要抛出异常时,尽量使用JDK已定义的异常类型 。例如,参数检查不合法,应该抛出IllegalArgumentException:

java 复制代码
static void process1(int age) {
    if (age <= 0) {
        throw new IllegalArgumentException();
    }
}

在一个大型项目中,可以自定义新的异常类型,但是,保持一个合理的异常继承体系是非常重要的。一个常见的做法是自定义一个BaseException作为"根异常",然后,派生出各种业务类型的异常 。BaseException需要从一个适合的Exception派生,通常建议从RuntimeException派生:

java 复制代码
public class BaseException extends RuntimeException {
}

其他业务类型的异常就可以从BaseException派生:

java 复制代码
public class UserNotFoundException extends BaseException {
}

public class LoginFailedException extends BaseException {
}

...

自定义的BaseException应该提供多个构造方法:

java 复制代码
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可以根据父类快速生成子类的构造方法。

  • 抛出异常时,尽量复用JDK已定义的异常类型;
  • 自定义异常体系时,推荐从RuntimeException派生"根异常",再派生出业务异常;
  • 自定义异常时,应该提供多种构造方法。
相关推荐
code2cat1 小时前
Java进阶篇之AtomicLongFieldUpdater:把累计额度留在对象字段中
java·cas·并发编程
WeiXin_DZbishe1 小时前
基于springboot城市公交实时运营与调度系统-计算机毕设 附源码【课程设计】66173
java·vue.js·spring boot·后端·python·php·课程设计
泡茶喝茶写代码1 小时前
A股量化数据工程:从 REST 接口到策略信号(第 18 篇):放量缩量异动扫描
java·python·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
wewowilling1 小时前
认识微服务
java·运维·微服务·springcloud
代码什么用2 小时前
Java Web 7-10
java·servlet
沫璃染墨2 小时前
《Qt从零入门系列(十三):QSS样式表详解——从选择器与层叠规则到控件美化实战》
开发语言·css·c++·qt·ui·qt6.3·qss
达子6663 小时前
RUST 图解 第 3 章:通用编程概念(Common Programming Concepts)
开发语言·算法·rust
道尔柯南3 小时前
C++ 面向对象编程入门:类和对象(上)
开发语言·c++·算法
楠楠子呀3 小时前
英语、西语、阿语客户各开一个口:多语言获客的分流方案
开发语言·javascript·ecmascript·跨境电商·whatsapp·营销工具