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派生"根异常",再派生出业务异常;
  • 自定义异常时,应该提供多种构造方法。
相关推荐
心平气和量大福大8 分钟前
C#-WPF-Window主窗体
开发语言·c#·wpf
莫逸风1 小时前
【AgentScope 2.0】 0. 学习指南
java·llm·agent·agentscope
从零开始的代码生活_1 小时前
C++ 继承详解:访问控制、对象模型、菱形继承与设计取舍
开发语言·c++·后端·学习·算法
云小逸1 小时前
【C++ 第七阶段:模板、泛型编程与工程综合详解】
开发语言·c++
z123456789862 小时前
2026最新两款AI编程工具深度对比实测
java·数据库·ai编程
GIS阵地2 小时前
QgsSingleBandPseudoColorRenderer 完整详解(QGIS 3.40.13 C++)
开发语言·前端·c++·qt·qgis
yaoxin5211233 小时前
470. Java 反射 - Member 接口与 AccessFlag
java·开发语言·python
groundhappy3 小时前
idalib安装和codex ida-mcp配置
linux·开发语言·python
做个文艺程序员3 小时前
Linux第24篇:Java应用监控体系搭建:Prometheus+Grafana可视化运维
java·grafana·prometheus
小钻风33664 小时前
Spring Boot 文件上传详解:深入理解 MultipartFile 的使用与原理
java·开发语言