当前位置: 首页 > article >正文

【项目初始化】自定义异常处理

我们在项目初始化的工作之一就是要自定义异常处理,用来处理项目中出现的各种异常,如业务异常、系统异常等等。
这些属于项目的通用基础代码,在任何后端中都可以复用。

1. 自定义错误码

自定义错误码,对错误进行收敛,便于前端统一处理

小技巧:

  1. 自定义错误码时,建议和主流的错误码含义保持一致,如HTTP错误码
  2. 错误码不要连续,预留一些间隔,便于后续扩展
import lombok.Getter;

@Getter
public enum ErrorCode {

    SUCCESS(0, "ok"),
    PARAMS_ERROR(40000, "请求参数错误"),
    NOT_LOGIN_ERROR(40100, "未登录"),
    NO_AUTH_ERROR(40101, "无权限"),
    NOT_FOUND_ERROR(40400, "请求数据不存在"),
    FORBIDDEN_ERROR(40300, "禁止访问"),
    SYSTEM_ERROR(50000, "系统内部异常"),
    OPERATION_ERROR(50001, "操作失败");

    /**
     * 状态码
     */
    private final int code;

    /**
     * 信息
     */
    private final String message;

    ErrorCode(int code, String message) {
        this.code = code;
        this.message = message;
    }

}

2. 自定义异常类

一般不建议直接抛出Java内置的RuntimeException,而是自定义一个业务异常,和内置异常类区分开来,便于定制化输出错误信息:

import lombok.Getter;

/**
 * @Description: 自定义异常类
 */
@Getter
public class BusinessException extends RuntimeException {
    /**
     * 状态码
     */
    private final int code;

    public BusinessException(int code, String message) {
        super(message);
        this.code = code;
    }

    public BusinessException(ErrorCode errorCode) {
        super(errorCode.getMessage());
        this.code = errorCode.getCode();
    }

    public BusinessException(ErrorCode errorCode, String message) {
        super(message);
        this.code = errorCode.getCode();
    }

}

ThrowUtils

为了更方便抛出异常,可以封装一个ThrowUtils,类似断言类,简化抛异常的代码:


public class ThrowUtils {

    /**
     * 条件成立则抛异常
     * @param condition
     * @param runtimeException
     */
    public static void throwIf(boolean condition, RuntimeException runtimeException) {
        if (condition){
            throw runtimeException;
        }
    }

    /**
     * 条件成立则抛异常
     * @param condition
     * @param errorCode
     */
    public static void throwIf(boolean condition, ErrorCode errorCode) {
        throwIf(condition, new BusinessException(errorCode));
    }

    /**
     * 条件成立则抛异常
     * @param condition
     * @param errorCode
     * @param message
     */
    public static void throwIf(boolean condition, ErrorCode errorCode, String message) {
        throwIf(condition,new BusinessException(errorCode,message));
    }
}

http://www.kler.cn/a/516279.html

相关文章:

  • windows平台通过命令行安装前端开发环境
  • 小游戏源码开发搭建技术栈和服务器配置流程
  • 没有屋檐的房子-023粪堆旁边的舞蹈
  • C++----STL(list)
  • Odoo免费开源ERP最佳业务实践:生产管理
  • 低代码可视化-转盘小游戏可视化-代码生成器
  • 终极的复杂,是简单
  • PVE 虚拟机安装 Debian 无图形化界面服务器
  • 【后端开发】字节跳动青训营之Go语言进阶与依赖管理
  • Elementor Pro 3.27 汉化版 2100套模板 安装教程 wordpress主题中文编辑器插件免费下载
  • 缓存-Redis-数据结构-redis哪些数据结构是跳表实现的?
  • Node.js的解释
  • Charles 4.6.7 浏览器网络调试指南:基本界面与操作(二)
  • Vue 全局自适应大小:使用 postcss-pxtorem
  • [MySQL]数据类型以及表的属性与操作大全
  • linux虚拟机连接不上Xshell
  • NLP自然语言处理中Word2Vec和GloVe概述
  • 豆瓣Top250电影的数据采集与可视化分析(scrapy+mysql+matplotlib)
  • MongoDB 数据库备份和恢复全攻略
  • cesium相机
  • Flutter接django后台文件通道
  • Tensor 基本操作4 理解 indexing,加减乘除和 broadcasting 运算 | PyTorch 深度学习实战
  • 【人工智能】深度卷积神经网络学习
  • 【数据库】详解MySQL数据库中索引的本质与底层原理
  • 代码随想录day16
  • 一键视频转文字/音频转文字,浏览器右键提取B站视频文案,不限时长免费无限次可用