springboot学习笔记:全局异常处理(代码片段)

听风者-better 听风者-better     2022-12-11     115

关键词:

SpringBoot可以使用@ControllerAdvice注解进行全局异常的处理,这样可以方便统一对异常的处理返回

1.处理常见异常

首先我们需要确定一个异常处理统一返回的格式

@Data
public class BaseResult 
    /**
     * 返回code,成功为0,失败为-1
     */
    private String code;

    /**
     * 返回数据
     */
    private Object data;

    /**
     * 返回信息
     */
    private String msg;

    public BaseResult()

    

    public BaseResult(String code, Object data, String msg) 
        this.code = code;
        this.data = data;
        this.msg = msg;
    

    public BaseResult success(Object data, String msg) 
        return new BaseResult("0", data, msg);
    

    public BaseResult failed(String msg) 
        return new BaseResult("-1", null, msg);
    

接着定义一个全局异常处理类,这里以空指针异常为目标进行处理返回

@ControllerAdvice
@ResponseBody
public class BaseExceptionHandler 

    @ExceptionHandler(NullPointerException.class)
    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
    public BaseResult handleNullException(NullPointerException e)
        return new BaseResult().failed("空指针异常");
    

测试请求

@RestController
public class TestController 

    @GetMapping("/test")
    public String test() 
        String s = null;
        s.toString();
        return "test";
    

2.处理自定义异常

除了一些常见异常的处理,我们还可以自定义一些业务异常

public class BusinessException extends RuntimeException
    /**
     *  自定义项目内异常
     */
    public BusinessException(String msg)
        super(msg);
    

在全局异常处理类里添加对自定义异常的处理

@ExceptionHandler(BusinessException.class)
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
public BaseResult handleBusinessException(BusinessException e)
    return new BaseResult().failed(e.getMessage());

测试请求

@GetMapping("/test2")
public String test2() 
    try 
        int i = 1 / 0;
     catch (Exception e) 
        throw new BusinessException("测试自定义异常");
    
    return "test2";

springboot异常配置(代码片段)

文章目录Springboot异常配置上一节Springboot参数校验源码1.通过ExceptionHandler处理控制器异常通过@ExceptionHandler和@RestControllerAdvice(或者@ControllerAdvice)做全局异常处理参数校验异常处理自定义异常处理2.通过继承Respon... 查看详情

springboot全局异常处理(代码片段)

自定义异常类@EqualsAndHashCode(callSuper=true)@DatapublicclassCustomExceptionextendsRuntimeExceptionprivateIntegercode;publicCustomException(Stringmessage,Integercode)super(message);this.code& 查看详情

springboot全局异常统一处理(代码片段)

...ice&@ExceptionHandlerhttp异常ErrorControllerServlet异常Filter1.SpringBoot默认错误统一处理机制在基于SpringBoot的Web应用中,对于Http请求处理过程中发生的各种错误,如常见的400、404和500 查看详情

springboot学习13:springboot异常处理方式3(使用@controlleradvice+@exceptionhandle注解)

问题:使用@ExceptionHandle注解需要在每一个controller代码里面都添加异常处理,会咋成代码冗余解决方法:新建一个全局异常处理类,添加@ControllerAdvice注解即可packagecom.bjsxt.exception;importorg.springframework.web.bind.annotation.ControllerAdvice;im... 查看详情

springboot2.0系列教程springboot框架添加全局异常处理(代码片段)

Hello大家好,本章我们添加全局异常处理。另求各路大神指点,感谢一:为什么需要定义全局异常在互联网时代,我们所开发的应用大多是直面用户的,程序中的任何一点小疏忽都可能导致用户的流失,而程序出现异常往往又是... 查看详情

springboot结合全局异常处理之登录注册验证(代码片段)

...全局异常处理比较容易上手全局异常处理首先来创建一个sprIngboot的web项目或模块,目录结构如下实体类User.java@DatapublicclassUserprivateStringuserName;privateStringpasswo 查看详情

重学springboot系列之统一全局异常处理(代码片段)

重学SpringBoot系列之统一全局异常处理设计一个优秀的异常处理机制异常处理的乱象例举该如何设计异常处理开发规范自定义异常和相关数据结构该如何设计数据结构枚举异常的类型自定义异常请求接口统一响应数据结构使用示... 查看详情

springboot使用@controlleradvice注解全局处理系统异常(代码片段)

在日常的开发中,我们很多时候不停的使用trycatch来处理异常,这样的代码重复性强,通过@controllerAdvice注解来实现可以全局定义异常,大大减少代码的trycatch。importcom.vicrab.api.bean.OperateCode;importcom.vicrab.api.server.model.OperateResult;impo... 查看详情

springboot全局异常处理(代码片段)

自定义异常类@EqualsAndHashCode(callSuper=true)@DatapublicclassCustomExceptionextendsRuntimeExceptionprivateIntegercode;publicCustomException(Stringmessage,Integercode)super(message);this.code=code;publicCustomException(ResultCoderesultCode)super(resultCode.getMessage());this.co... 查看详情

springboot2.x:全局异常处理

前言在JavaWeb系统开发中,不管是Controller层、Service层还是Dao层,都有可能抛出异常。如果在每个方法中加上各种trycatch的异常处理代码,那样会使代码非常繁琐。在SpringMVC中,我们可以将所有类型的异常处理从各个单独的方法中... 查看详情

java中的全局异常处理(代码片段)

Java中的全局异常处理全局异常处理SpringBoot的全局异常处理@ControllerAdvice注解全局异常处理ErrorController接口和@ControllerAdvice注解比较:相同点:两者都是Spring项目中的全局异常处理方式不同点:捕获异常位置不同:ErrorController接口... 查看详情

java中的全局异常处理(代码片段)

Java中的全局异常处理全局异常处理SpringBoot的全局异常处理@ControllerAdvice注解全局异常处理ErrorController接口和@ControllerAdvice注解比较:相同点:两者都是Spring项目中的全局异常处理方式不同点:捕获异常位置不同:ErrorController接口... 查看详情

java中的全局异常处理(代码片段)

Java中的全局异常处理全局异常处理SpringBoot的全局异常处理@ControllerAdvice注解全局异常处理ErrorController接口和@ControllerAdvice注解比较:相同点:两者都是Spring项目中的全局异常处理方式不同点:捕获异常位置不同:ErrorController接口... 查看详情

spring--springboot配置全局异常处理器

一、为什么要使用全局异常处理器?什么是全局异常处理器?就是把错误异常统一处理的方法。应用场景:1、当你使用jsr303参数校验器,如果参数校验不通过会抛异常,而且无法使用try-catch语句直接捕获,这时可以使用全局异... 查看详情

springboot全局异常处理器(原理及使用详解)(代码片段)

...现全局异常处理器1什么是全局异常处理器  软件开发springboot项目过程中,不可避免的需要处理各种异常,springmvc架构中各层会出现大量的try...catch...finally...代码块,不仅有大量的冗余代码,而且还影响代码的... 查看详情

springmvc,springboot统一校验自定义异常全局异常处理(代码片段)

引入jar包<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency>写一个DTO用来接收客户端传送的参数@Datapubliccl 查看详情

springmvc,springboot统一校验自定义异常全局异常处理(代码片段)

引入jar包<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency>写一个DTO用来接收客户端传送的参数@Datapubliccl 查看详情

springboot入门二十一,全局异常处理

一共两个文件,一个处理全局异常,保存信息到日志,另外一个负责返回异常信息给接口,只要将其文件添加到项目中,无需再做其他配置即可1.MyExceptionHandler.java全局异常处理类优先执行此类,这里不好抓取404、403等错误信息getMaps()请... 查看详情