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派生"根异常",再派生出业务异常;
  • 自定义异常时,应该提供多种构造方法。
相关推荐
好开心332 分钟前
axios的使用
开发语言·前端·javascript·前端框架·html
又蓝25 分钟前
使用 Python 操作 Excel 表格
开发语言·python·excel
小灰灰要减肥25 分钟前
装饰者模式
java
张铁铁是个小胖子37 分钟前
MyBatis学习
java·学习·mybatis
余~~1853816280038 分钟前
稳定的碰一碰发视频、碰一碰矩阵源码技术开发,支持OEM
开发语言·人工智能·python·音视频
Am心若依旧4091 小时前
[c++11(二)]Lambda表达式和Function包装器及bind函数
开发语言·c++
明月看潮生1 小时前
青少年编程与数学 02-004 Go语言Web编程 20课题、单元测试
开发语言·青少年编程·单元测试·编程与数学·goweb
Yan.love1 小时前
开发场景中Java 集合的最佳选择
java·数据结构·链表
椰椰椰耶1 小时前
【文档搜索引擎】搜索模块的完整实现
java·搜索引擎
大G哥1 小时前
java提高正则处理效率
java·开发语言