SpringBoot中@RestControllerAdvice注解的使用

 更新时间:2024年01月19日 09:05:03   作者:景庆197  
这篇文章主要介绍了SpringBoot中@RestControllerAdvice注解的使用,@RestControllerAdvice主要用精简客户端返回异常,它可以捕获各种异常,需要的朋友可以参考下

1.主要作用

@RestControllerAdvice主要用精简客户端返回异常,它可以捕获各种异常

2.判断异常的类型

  • 后端数据校验异常
  • 未授权异常
  • 自定义异常
  • 普通异常

3.实现

未优化前

import com.qing.emos.wx.exception.EmosException;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.authz.UnauthorizedException;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.*;
@Slf4j
//@RestControllerAdvice可以捕获SpringMVC异常
@RestControllerAdvice
public class ExceptionAdvice {
    @ResponseBody
    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
//    ExceptionHandler用于全局捕获异常
    @ExceptionHandler(Exception.class)
    public String validExcepionHandler(Exception e){
        log.error("执行异常",e);
//        后端验证失败的异常,参数没传,或者传的不对
        if(e instanceof MethodArgumentNotValidException){
            MethodArgumentNotValidException exception = (MethodArgumentNotValidException) e;
            return exception.getBindingResult().getFieldError().getDefaultMessage();
        }
//        精简异常的内容,EmosException为自己定义异常
        else if(e instanceof EmosException){
            EmosException exception = (EmosException) e;
            return  exception.getMsg();
        }
//        未授权异常
        else if(e instanceof UnauthorizedException){
            return "你不具备相关权限";
        }
//       普通异常
        else {
            return "后端执行异常";
        }
    }
}

优化后

到此这篇关于SpringBoot中@RestControllerAdvice注解的使用的文章就介绍到这了,更多相关SpringBoot的@RestControllerAdvice内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot后端解决跨域问题的3种方案分享

    SpringBoot后端解决跨域问题的3种方案分享

    这篇文章主要给大家分享介绍了关于SpringBoot后端解决跨域问题的3种方案,跨域指的是浏览器不能执行其他网站的脚本,它是由浏览器的同源策略造成的,是浏览器施加的安全限制,需要的朋友可以参考下
    2023-07-07
  • Mybatis通过Spring完成代理类注入的流程分析

    Mybatis通过Spring完成代理类注入的流程分析

    这篇文章主要介绍了Mybatis通过Spring完成代理类注入的流程分析,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • Java 8 Stream Api 中的 map和 flatMap 操作方法

    Java 8 Stream Api 中的 map和 flatMap 操作方法

    Java 8提供了非常好用的 Stream API ,可以很方便的操作集合。今天通过这篇文章给大家分享Java 8 Stream Api 中的 map和 flatMap 操作方法,需要的朋友可以参考下
    2019-11-11
  • Spring报错:Error creating bean with name的问题及解决

    Spring报错:Error creating bean with name的问

    这篇文章主要介绍了Spring报错:Error creating bean with name的问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • SpringBoot 如何编写配置文件

    SpringBoot 如何编写配置文件

    这篇文章主要介绍了SpringBoot 编写配置文件的两种方法,帮助大家更好的理解和使用springboot框架,感兴趣的朋友可以了解下
    2020-11-11
  • 解决mybatis映射结果集失效的问题

    解决mybatis映射结果集失效的问题

    这篇文章主要介绍了解决mybatis映射结果集失效的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • springboot开启mybatis驼峰命名自动映射的三种方式

    springboot开启mybatis驼峰命名自动映射的三种方式

    这篇文章给大家总结springboot开启mybatis驼峰命名自动映射的三种方式,文章并通过代码示例给大家介绍的非常详细,具有一定的参考价值,需要的朋友可以参考下
    2024-02-02
  • springboot 如何解决cross跨域请求的问题

    springboot 如何解决cross跨域请求的问题

    这篇文章主要介绍了springboot 如何解决cross跨域请求的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • AsyncHttpClient RequestFilter请求筛选源码解读

    AsyncHttpClient RequestFilter请求筛选源码解读

    这篇文章主要为大家介绍了AsyncHttpClient RequestFilter请求筛选源码解读,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • Java对象类型的判断详解

    Java对象类型的判断详解

    这篇文章主要介绍了Java对象类型的判断,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04

最新评论