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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MyBatis中ResultMap与多表查询的处理方法

    MyBatis中ResultMap与多表查询的处理方法

    这篇文章主要介绍了MyBatis中ResultMap与多表查询的处理方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-09-09
  • Java 远程调用失败重试的操作方法

    Java 远程调用失败重试的操作方法

    这篇文章主要介绍了Java 远程调用失败重试的操作方法,今天给大家介绍了一下 Spring​ 的 @Retryable 注解使用,并通过几个 demo 来带大家编写了自己重试拦截器以及回滚方法,需要的朋友可以参考下
    2022-09-09
  • Java多线程并发synchronized 关键字

    Java多线程并发synchronized 关键字

    这篇文章主要介绍了Java多线程并发synchronized 关键字,Java 在虚拟机层面提供了 synchronized 关键字供开发者快速实现互斥同步的重量级锁来保障线程安全。
    2022-06-06
  • Eclipse配置SVN的几种方法及使用详情

    Eclipse配置SVN的几种方法及使用详情

    这篇文章主要介绍了Eclipse配置SVN的几种方法及使用详情,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • Java内存溢出的几个区域总结(注意避坑!)

    Java内存溢出的几个区域总结(注意避坑!)

    内存溢出是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于虚拟机能提供的最大内存,下面这篇文章主要给大家介绍了关于Java内存溢出的几个区域,总结出来给大家提醒注意避坑,需要的朋友可以参考下
    2022-11-11
  • 关于Spring中的@Configuration中的proxyBeanMethods属性

    关于Spring中的@Configuration中的proxyBeanMethods属性

    这篇文章主要介绍了关于Spring中的@Configuration中的proxyBeanMethods属性,需要的朋友可以参考下
    2023-07-07
  • SpringBoot 使用 Sa-Token 完成注解鉴权功能(权限校验)

    SpringBoot 使用 Sa-Token 完成注解鉴权功能(权限校验)

    Sa-Token 是一个轻量级 java 权限认证框架,主要解决登录认证、权限认证、单点登录、OAuth2、微服务网关鉴权 等一系列权限相关问题,这篇文章主要介绍了SpringBoot使用Sa-Token完成注解鉴权功能,需要的朋友可以参考下
    2023-05-05
  • Java消息队列RabbitMQ之消息回调详解

    Java消息队列RabbitMQ之消息回调详解

    这篇文章主要介绍了Java消息队列RabbitMQ之消息回调详解,消息回调,其实就是消息确认(生产者推送消息成功,消费者接收消息成功)  , 对于程序来说,发送者没法确认是否发送成功,需要的朋友可以参考下
    2023-07-07
  • 使用SpringSecurity设置角色和权限的注意点

    使用SpringSecurity设置角色和权限的注意点

    这篇文章主要介绍了使用SpringSecurity设置角色和权限的注意点,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Spring Boot利用JSR303实现参数验证的方法实例

    Spring Boot利用JSR303实现参数验证的方法实例

    这篇文章主要给大家介绍了关于Spring Boot利用JSR303实现参数验证的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Spring Boot具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-05-05

最新评论