java后台异常统一处理

1.首先自定义一个异常

复制代码
/**
 * 自定义异常*/

@Data
public class BusinessException extends RuntimeException {
     private ErrorResult errorResult;

     public BusinessException(ErrorResult errorResult){
         super(errorResult.getErrMessage());
         this.errorResult=errorResult;
     }
}

2.注册异常

复制代码
/**
 * 自定义统一异常处理
 * 1.通过注解声明异常处理类
 * 2.编写方法,在方法内部处理异常,构造响应数据
 * 3.方法上编写注解,指定此方法处理的异常类型
 */

@ControllerAdvice
public class ExceptionAdvice {

    @ExceptionHandler(BusinessException.class)
    public ResponseEntity handleException(BusinessException be){
        be.printStackTrace();
        ErrorResult errorResult=be.getErrorResult();
        return ResponseEntity.status(500).body(errorResult);
    }
    @ExceptionHandler(Exception.class)
    public ResponseEntity OtherException(BusinessException be){
        be.printStackTrace();
        return ResponseEntity.status(500).body(ErrorResult.error());
    }
}

3.统一返回的错误信息对象

复制代码
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class ErrorResult {

    private String errCode = "999999";
    private String errMessage;

    public static ErrorResult error() {
        return ErrorResult.builder().errCode("999999").errMessage("系统异常稍后再试").build();
    }

    public static ErrorResult fail() {
        return ErrorResult.builder().errCode("000001").errMessage("发送验证码失败").build();
    }

    public static ErrorResult loginError() {
        return ErrorResult.builder().errCode("000002").errMessage("验证码失效").build();
    }

    public static ErrorResult faceError() {
        return ErrorResult.builder().errCode("000003").errMessage("图片非人像,请重新上传!").build();
    }

    public static ErrorResult mobileError() {
        return ErrorResult.builder().errCode("000004").errMessage("手机号码已注册").build();
    }

    public static ErrorResult contentError() {
        return ErrorResult.builder().errCode("000005").errMessage("动态内容为空").build();
    }

    public static ErrorResult likeError() {
        return ErrorResult.builder().errCode("000006").errMessage("用户已点赞").build();
    }

    public static ErrorResult disLikeError() {
        return ErrorResult.builder().errCode("000007").errMessage("用户未点赞").build();
    }

    public static ErrorResult loveError() {
        return ErrorResult.builder().errCode("000008").errMessage("用户已喜欢").build();
    }

    public static ErrorResult disloveError() {
        return ErrorResult.builder().errCode("000009").errMessage("用户未喜欢").build();
    }
}
相关推荐
百锦再2 分钟前
第1章 Rust语言概述
java·开发语言·人工智能·python·rust·go·1024程序员节
武昌库里写JAVA6 分钟前
element-ui 2.x 及 vxe-table 2.x 使用 css 定制主题
java·vue.js·spring boot·sql·学习
一叶之秋141213 分钟前
QT背景介绍与环境搭建
开发语言·qt
java1234_小锋23 分钟前
PyTorch2 Python深度学习 - 模型保存与加载
开发语言·python·深度学习·pytorch2
JavaGuide33 分钟前
OPPO 后端校招面试,过于简单了!
java·后端
码割机39 分钟前
Linux服务器安装jdk和maven详解
java·linux·maven
ACP广源盛139246256731 小时前
(ACP广源盛)GSV2231---DisplayPort 1.4 MST 到 HDMI 2.0/DP/Type-C 转换器(带嵌入式 MCU)
c语言·开发语言·单片机·嵌入式硬件·音视频·mst
quant_19861 小时前
【教程】使用加密货币行情接口 - 查询比特币实时价格
开发语言·后端·python·websocket·网络协议
熊猫_豆豆1 小时前
Python 写一个标准版和程序员版计算器
开发语言·python·计算器
Mr.Jessy1 小时前
Web APIs 学习第四天:DOM事件进阶
开发语言·前端·javascript·学习·ecmascript