千家信息网

SpringBoot中异常处理实例分析

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍"SpringBoot中异常处理实例分析"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"SpringBoot中异常处理实例分析"文章能帮助大家解
千家信息网最后更新 2026年11月01日SpringBoot中异常处理实例分析

这篇文章主要介绍"SpringBoot中异常处理实例分析"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"SpringBoot中异常处理实例分析"文章能帮助大家解决问题。

一、背景

在我们编写程序的过程中,程序中可能随时发生各种异常,那么我们如何优雅的处理各种异常呢?

二、需求

1、拦截系统中部分异常,返回自定义的响应。

比如:

系统发生HttpRequestMethodNotSupportedException异常,我们需要返回如下信息。

http的状态码:返回 405

{        code: 自定义异常码,        message: 错误消息}

2、实现自定义异常的拦截

拦截我们自己写的 BizException

三、编写一些异常基础代码

1、引入jar包

            org.springframework.boot        spring-boot-starter-web                org.springframework.boot        spring-boot-starter-validation    

注意:

引入spring-boot-starter-validation是为了验证请求的中的参数,然后当参数不满足时抛出异常。

2、定义一个自定义异常

public class BizException extends RuntimeException {    public BizException() {    }    public BizException(String message) {        super(message);    }    public BizException(String message, Throwable cause) {        super(message, cause);    }    public BizException(Throwable cause) {        super(cause);    }    public BizException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {        super(message, cause, enableSuppression, writableStackTrace);    }}

解释

提供一个 /exception/password api,需要传递一个password参数

1、当不传递 password 参数时将抛出MethodArgumentNotValidException异常。

2、当password传递exception参数时,则抛出BizException异常。

4、测试

1、不传递password参数响应是什么

1、使用默认的DefaultHandlerExceptionResolver处理

这个类DefaultHandlerExceptionResolver是默认自动配置的。

从上图中可以看出有一个默认字段的返回值

2、使用ResponseEntityExceptionHandler处理

1、编写异常处理代码-使用默认的逻辑

@RestControllerAdvicepublic class RestExceptionHandler extends ResponseEntityExceptionHandler {    @Override    protected ResponseEntity handleMethodArgumentNotValid(MethodArgumentNotValidException ex, HttpHeaders headers, HttpStatus status, WebRequest request) {        // 此处自定义返回值        return super.handleMethodArgumentNotValid(ex, headers, status, request);    }}

可以看到handleMethodArgumentNotValid方法直接调用父类的方法,即使用默认的处理方式。

从上图中可以看出返回值是空

2、编写异常处理代码-返回值返回自定义内容

@Component@RestControllerAdvicepublic class RestExceptionHandler extends ResponseEntityExceptionHandler {        @Override    protected ResponseEntity handleMethodArgumentNotValid(MethodArgumentNotValidException ex, HttpHeaders headers, HttpStatus status, WebRequest request) {        // 此处自定义返回值        return super.handleMethodArgumentNotValid(ex, headers, status, request);    }                @Override    protected ResponseEntity handleHttpRequestMethodNotSupported(HttpRequestMethodNotSupportedException ex, HttpHeaders headers, HttpStatus status, WebRequest request) {        Set supportedMethods = ex.getSupportedHttpMethods();        // 自定义请求返回值        Map body = new HashMap<>(4);        body.put("code", "错误码");        body.put("message", "当前请求的方法不支持,支持的请求方法为:" + supportedMethods);        return new ResponseEntity<>(body, headers, status);    }}

由上面的代码可知handleHttpRequestMethodNotSupported方法返回了自定义的body。

从上图中可以看出,返回了我们自己定义的返回值。

2、password参数传递exception1、使用ResponseEntityExceptionHandler或DefaultHandlerExceptionResolver处理

由上图可知返回结果不对,我们需要自定义返回结果。

2、返回自定义异常

1、编写BizException处理代码

@RestControllerAdvicepublic class BizExceptionHandler {    @ExceptionHandler(BizException.class)    public ResponseEntity handleBizException(BizException exception) {        // 自定义请求返回值        Map body = new HashMap<>(4);        body.put("code", "错误码");        body.put("message", "异常信息为:" + exception.getMessage());        return new ResponseEntity<>(body, HttpStatus.INTERNAL_SERVER_ERROR);    }}

2、测试返回结果

从上图可知返回了自定义信息

四、注意事项

1、如果实现自定义异常处理类上使用@RestControllerAdvice注解方法上使用@ExceptionHandler来处理特定的异常

2、ResponseEntityExceptionHandler默认处理那些异常

3、使用了ResponseEntityExceptionHandler后,为什么发生了异常后返回体为空

默认情况下,实现了 ResponseEntityExceptionHandler这个类后,这个类处理的所有异常的响应结果都是 null,如果想返回别的值需要我们自己去处理。

关于"SpringBoot中异常处理实例分析"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。

处理 参数 方法 上图 代码 结果 实例 实例分析 分析 信息 知识 错误 内容 程序 系统 行业 过程 支持 测试 不同 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司 苏州找大状互联网科技有限公司 互联网科技股票 一五八零互联网科技 互联网科技大会案例 互联网科技公司招聘 中盈科技互联网信息有限公司 互联网科技实习生岗位职责 字节跳动和互联网科技 北京华百购互联网科技有限公司 受益于互联网科技的高速发展 未来五年的互联网科技 广州新华互联网科技学校电竞方面 深圳市罗太互联网科技有限公司 国大互联网教育科技有限公司薪资 张召忠谈中国互联网科技 郑州欣桑互联网科技有限公司 济南小医互联网科技有限公司招聘 科技互联网专业工作会议发言稿 现代科技的标志之一的互联网 互联网佳科技有限公司 互联网公司 科技公司 紫鲸互联网科技 广州互联网络科技有限公司 深圳艾佳互联网科技 科技类的互联网平台 爱医互联网络科技 黑云互联网科技有限公司 安徽零酒互联网科技有限公司 每日互联网科技新闻
0