zoukankan      html  css  js  c++  java
  • springboot2 统一异常处理

    统一异常处理,不需要在每一层上单独捕获异常,只需要关注业务的开发:

    代码如下:

    @RestControllerAdvice
    @Slf4j
    public class GlobalExceptionHandler {
    
        @ExceptionHandler(value = Exception.class)
        public AjaxResponse handler(Exception e){
            AjaxResponse r = new AjaxResponse();
            if (e instanceof RuntimeException){
                RuntimeException selectNoFindException = (RuntimeException) e;
                r.setStatus(-1);
                r.setMsg(selectNoFindException.getMessage());
            } else {
                r.setStatus(-1);
                r.setMsg("系统错误");
            }
            log.error(e.getMessage());
            return r;
        }
    }

    其中AjaxResponse的源码定义如下:

    package com.crhms.medicareopinion.model;
    
    import lombok.Data;
    
    @Data
    public class AjaxResponse<T> {
    
        private Integer status;
    
        private String msg;
    
        private T data;
    
    }

    解释一下:

    1. 异常要分类,主要是因为异常的错误消息要传递给前端显示,如果我们直接把所有的异常消息给前端,就会有诸如错误码,空指针类似的消息,显示是不对的。

       通常来说,自定义的异常是把错误给前端直接显示, 其它异常我们可以固定一个错误消息给前端即可,

    2. 把正常的rest返回结果和异常的返回结果 用一个类来封装一下,方便修改,而不是硬编码。请参考下一篇springboot统一返回结果

  • 相关阅读:
    为什么webstrom无法格式化代码?
    总结jq的一些特效
    欢迎自己入住博客
    JavaScript基础
    HTTP协议的概念作用和特点
    STM32(二十五)读写内部flash
    STM32(二十四)MDK编译过程以及文件类型全解
    STM32(二十三)RTC-实时时钟
    STM32(二十二)DAC输出正弦波
    STM32(二十一)SDIO-SD卡读写测试
  • 原文地址:https://www.cnblogs.com/hankuikui/p/10239671.html
Copyright © 2011-2022 走看看