You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot 2.6.1抛出ResponseStatusException无响应体问题排查

问题描述

我正在使用以下版本的Spring Boot:

id 'org.springframework.boot' version '2.6.1'

以下是抛出异常的代码片段:

catch(Exception e){
    System.out.println(e.getLocalizedMessage());
    throw new ResponseStatusException(
            HttpStatus.BAD_REQUEST, "something went wrong", e);
}

但返回的400响应没有响应体,响应详情如下:

* upload completely sent off: 100 out of 100 bytes
    * Mark bundle as not supporting multiuse
    < HTTP/1.1 400 
    < Vary: Origin
    < Vary: Access-Control-Request-Method
    < Vary: Access-Control-Request-Headers
    < X-Content-Type-Options: nosniff
    < X-XSS-Protection: 1; mode=block
    < Cache-Control: no-cache, no-store, max-age=0, must-revalidate
    < Pragma: no-cache
    < Expires: 0
    < X-Frame-Options: DENY
    < Content-Length: 0
    < Date: Thu, 27 Oct 2022 14:43:38 GMT
    < Connection: close
    < 
    * Closing connection 0

更新说明:已在application.properties中配置:

server.error.include-message=always

请问还遗漏了什么?


解决方案

在Spring Boot 2.6.x版本中,仅配置server.error.include-message=always不足以让ResponseStatusException返回带内容的响应体,需要补充以下配置项:

# 控制是否包含绑定错误信息,按需设置
server.error.include-binding-errors=always
# 控制是否包含栈追踪,可选值:always/never/on_param
server.error.include-stacktrace=never
# 控制是否包含异常类名,可选true/false
server.error.include-exception=false

另外需要排查:

  • 项目中是否存在自定义的@ControllerAdvice或ErrorController实现,这类自定义逻辑可能覆盖了Spring Boot默认的异常处理流程,导致响应体未被正确生成。如果有,需确保自定义处理器正确处理ResponseStatusException并将异常信息写入响应。
  • 确认代码中抛出ResponseStatusException的逻辑是否被正确执行,比如是否存在其他异常捕获逻辑提前拦截了异常。

内容的提问来源于stack exchange,提问作者Prasenjit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 16:31:02