SpringBoot全局异常捕获处理实现方案

 更新时间:2024年02月10日 10:24:13   作者:RobinCode  
这篇文章主要详细介绍了SpringBoot全局异常捕获处理实现方案,文章通过代码示例给大家介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下

在Spring Boot中实现全局异常处理可以通过以下方式:

  • 使用@ControllerAdvice注释创建一个全局异常处理类,并使用@ExceptionHandler注释来定义具体异常的处理方法。
import your.package.IllegalNumberException;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @class GlobalExceptionHeadler
 * @date 2021/8/28 13:41
 */
@ControllerAdvice
public class GlobalExceptionHeadler {

    //处理指定异常
    @ExceptionHandler(value = IllegalNumberException.class)//IllegalNumberException 自定义异常
    @ResponseBody
    public ResponseEntity<String> illegalNumberExceptionHeadler(Exception e){
        System.out.println("进入非法参数异常处理");
        return new ResponseEntity<>(e.getMessage(),HttpStatus.INTERNAL_SERVER_ERROR);
    }

    //处理exceptioin子类异常
    @ExceptionHandler(value = Exception.class)//作用方法上,作用:用来处理指定异常; value属性:用来处理指定类型的异常
    @ResponseBody
    public ResponseEntity<String> exceptionHeadler(Exception e){
        //if(e instanceof IllegalNumberException){} 等价于 上面的方法处理指定异常
        System.out.println("进入自定义异常处理");
        return new ResponseEntity<>(e.getMessage(),HttpStatus.INTERNAL_SERVER_ERROR);
    }
}
  • 自定义异常
/**
 * @class IllegalNumberException
 * @date 2021/8/28 14:05
 */
public class IllegalNumberException extends RuntimeException{
    public IllegalNumberException(String message){
        super(message);
    }
}
  • Controller
import your.package.IllegalNumberException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@RestController
@Slf4j
public class Test2Controller {
    

    @GetMapping("/testException")
    public ResponseEntity<String> demo(){
        int i = 1/0;
        return new ResponseEntity<>("ok", HttpStatus.OK);
    }

    @GetMapping("/testIllegalNumberException/{id}")
    public ResponseEntity<String> demo(@PathVariable("id") Integer id){
        if(id < 0){
            throw new IllegalNumberException("无效id,请检查");
        }
        return new ResponseEntity<>("ok", HttpStatus.OK);
    }


}
  • Postman测试效果

通用异常:

自定义异常:

 总结

在以上代码片段中,使用了 @ExceptionHandler 注解来指定该方法会处理哪种类型的异常。方法体中,你可以自定义返回给用户的响应,包括HTTP状态码和返回信息。使用 @ControllerAdvice 注解可以确保它会接收到由控制器抛出的异常。

如果需要更多具体的自定义设置,还可以在响应里添加 headers 信息,或者创建更复杂的响应体,例如使用ResponseEntity。官方的 Spring 框架文档提供了和这个主题相关的更多高级选项和最佳实践指南。

以上就是SpringBoot全局异常捕获处理实现方案的详细内容,更多关于SpringBoot全局异常捕获处理的资料请关注脚本之家其它相关文章!

相关文章

  • ant使用指南详细入门教程

    ant使用指南详细入门教程

    这篇文章主要介绍了ant使用指南详细入门教程,本文详细的讲解了安装、验证安装、使用方法、使用实例、ant命令等内容,需要的朋友可以参考下
    2015-06-06
  • Spring batch批处理框架

    Spring batch批处理框架

    本文主要介绍了Spring batch批处理框架的相关知识。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-04-04
  • 使用LambdaQueryWrapper动态加过滤条件 动态Lambda

    使用LambdaQueryWrapper动态加过滤条件 动态Lambda

    这篇文章主要介绍了使用LambdaQueryWrapper动态加过滤条件 动态Lambda,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教。
    2022-01-01
  • 详细总结Java中常用的原子类

    详细总结Java中常用的原子类

    今天给大家总结了一下Java常用的原子类,文中有非常详细的介绍及代码示例,对正在学习java的小伙伴们很有帮助,需要的朋友可以参考下
    2021-05-05
  • java 中DH的方式实现非对称加密的实例

    java 中DH的方式实现非对称加密的实例

    这篇文章主要介绍了java 中DH的方式实现非对称加密的实例的相关资料,这里提供实现简单实例,需要的朋友可以参考下
    2017-08-08
  • SpringBoot中的健康检查详解

    SpringBoot中的健康检查详解

    这篇文章主要介绍了SpringBoot中的健康检查详解,健康检查是一种用来确保应用程序和其所依赖的服务的状态正常的机制,在本文中,我们将探讨SpringBoot中的健康检查是什么以及如何使用它来监视应用程序的状态,需要的朋友可以参考下
    2023-07-07
  • springcloud gateway设置context-path的操作

    springcloud gateway设置context-path的操作

    这篇文章主要介绍了springcloud gateway设置context-path的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • Java restTemplate发送get请求query参数传递问题解决

    Java restTemplate发送get请求query参数传递问题解决

    这篇文章主要为大家介绍了Java restTemplate发送get请求query参数传递问题解决,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • Java使用Tessdata做OCR图片文字识别的详细思路

    Java使用Tessdata做OCR图片文字识别的详细思路

    这篇文章主要介绍了Java使用Tessdata做OCR图片文字识别的详细思路,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-07-07
  • 关于SpringMVC的异常处理机制详细解读

    关于SpringMVC的异常处理机制详细解读

    这篇文章主要介绍了关于SpringMVC的异常处理机制详细解读,SpringMVC是目前主流的Web MVC框架之一,本文将分析SpringMVC的异常处理内容,需要的朋友可以参考下
    2023-05-05

最新评论