首页 > 其他分享 >SpringBoot 统一异常处理

SpringBoot 统一异常处理

时间:2023-12-03 20:36:06浏览次数:35  
标签:code return SpringBoot msg ParamValidException 异常 public 统一

1.在SpringBoot中项目中常见的统一异常处理方式是:使用@RestControllerAdvice和@ExceptionHandler注解。项目中的所有类型异常都会被抛到统一异常处理类中统一处理。预期效果如下:

image

2.新建一个异常类ParamValidException,继承RuntimeException.

@Data
public class ParamValidException extends RuntimeException {

    /**
     * 异常错误码
     */
    private int code ;

    /**
     * 异常信息
     */
    private String msg ;

    /**
     * Constructs a new runtime exception with {@code null} as its
     * detail message.  The cause is not initialized, and may subsequently be
     * initialized by a call to {@link #initCause}.
     */
    public ParamValidException(int code, String msg) {
        this.code = code;
        this.msg = msg;
    }


}
  1. GlobalExceptionHandler类:
@RestControllerAdvice
@Slf4j
public class GlobalExceptionHandler {


    /**
     * 统一异常处理
     * @param e
     * @return
     */
    @ExceptionHandler(value = Exception.class)
    public Result errorHandler(Exception e){
        return Result.ERROR(e.getLocalizedMessage());
    }


    /**
     * 参数校验异常处理
     * @param e
     * @return
     */
    @ExceptionHandler(value = ParamValidException.class)
    public Result paramErrorHandler(ParamValidException e){
        return Result.ERROR(e.getCode() ,e.getMsg());
    }



}

4.不过,在Filter过滤器中的异常是无法被抛到统一异常处理类中,需要借助于HandlerExceptionResolver类进行手动抛出。如下:

image

我把代码复制出来,如下:

    @Autowired
    @Qualifier("handlerExceptionResolver")
    private HandlerExceptionResolver resolver;
	
	
    resolver.resolveException(httpRequest, httpResponse, null, e);

标签:code,return,SpringBoot,msg,ParamValidException,异常,public,统一
From: https://www.cnblogs.com/duanxiaobiao/p/17873654.html

相关文章

  • 统一接口返回结果实体
    REST接口封装统一返回数据工具类如下(记录):publicclassResult{/***响应状态码*/privateIntegercode;/***响应成功与否*/privatebooleansuccess;/***响应消息*/privateStringmsg;/***......
  • influxdb: unable to parse points 异常解决总结
    转载请注明出处:influxdb使用过程经常遇到:unabletoparsepoints 的异常:    unabletoparsepoints是InfluxDB抛出的异常,表示无法解析数据点(points)。这个错误通常与数据格式不匹配或数据字段类型错误有关。可能导致"unabletoparsepoints"错误的原因:1.......
  • java.net.ConnectException: Connection timed out: connectjava.net.连接异常:连接超
    因为我有steam++加速器,但这个加速器会清空你的hosts文件,往常出现java.net.ConnectException:Connectiontimedout:connectjava.net.连接异常:连接超时:连接这个问题的时候一般都是hosts文件被清空了。但昨天写作业的时候发现在hosts文件写上ip以后还会报错。这个问题我解决了......
  • springboot上传文件
    privatefinalstaticStringFILE_UPLOAD_PATH="D:\\upload\\";@RequestMapping(value="/uploadFile",method=RequestMethod.POST)@ResponseBodypublicRuploadFile(@RequestParam("file")MultipartFilefile){......
  • 无涯教程-Erlang - 异常处理
    任何编程语言都需要异常处理来处理运行时错误,以便可以维护应用程序的正常流程。通常,当Erlang中发生异常或错误时,将显示以下消息。{"initterminatingindo_boot",{undef,[{helloLearnfk,start,[],[]},{init,start_it,1,[]},{init,start_em,1,[]}]}}故障转储将被写入-erl_......
  • SpringBoot项目jar包启动瘦身
    SpringBoot项目jar包瘦身一、背景:现在使用SpringBoot微服务的场景下,一个项目可能会引入很多个jar包依赖,这样带来的问题就是jar包特别臃肿,包含动辄几百MB的jar包文件。这样每次进行发布的时候,需要传输这么大的jar包文件,不单单是对资源带宽的消耗,也白白浪费很多时间等待……......
  • SpringBoot如何使用@Scheduled创建定时任务?
    前言随着软件业务日益复杂,有时候需要创建一些定时任务以满足特定业务需求。在Java编程语言中,使用Spring框架可以轻松地创建出定时任务。SpringBoot作为Spring框架中的一员,在创建定时任务方面也提供了便利性和灵活性。本文将介绍SpringBoot如何使用@Scheduled创建定时任务。摘要......
  • 整合springboot+mybatisplus+mysql+swagger,开发后端接口
    一、版本1.springboot:2.7.82.mybatisplus:3.5.3.13.mysql:8.04.swagger:3.0二、建立数据表(省略表结构)三、新建maven工程及springboot项目1.完成后的项目目录:2.maven工程的pom文件引入依赖:点击查看代码<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http......
  • django-apschedule定时任务异常停止
    背景在django项目中使用django-apschedule来实现定时任务,使用的是BackgroundScheduler调度类,该调度的实现是通过后台线程的方式执行定时任务。其中任务都是持久化到数据库中的。在项目的运行过程中,因为数据库的异常,导致定时任务线程异常终止,即使数据库后续恢复正常,但也不再继续执行......
  • 【JavaSE】异常(异常体系、异常处理方式、自定义异常)
    异常介绍异常体系一定要能阐述异常的体系结构!异常类的祖先类:Throwable所有的异常都是一个类,如果不清楚可以在API帮助文档查询运行时异常:编译时没有错误,运行时可能会出错,通常是代码不严谨导致的编译时异常(不包含语法错误):主要起提醒作用,需要在运行之前给出解决方式异常处理......