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

Spring Web/Boot是否存在已映射标准HTTP状态码的内置异常?

Spring Web/Boot内置的预映射异常

当然有啦!Spring Web(包括Spring Boot)本身就内置了一堆已经和标准HTTP状态码绑定好的异常类——你根本不用自己写映射逻辑,直接抛出这些异常,框架就会自动帮你返回对应的HTTP状态码。我给你整理了几个日常开发里最常用的:

  • HttpMessageNotReadableException:对应 400 Bad Request
    通常在请求体格式错误(比如JSON语法错误)时会自动抛出,你也可以手动抛出它来表示请求参数或格式不符合要求。

  • HttpRequestMethodNotSupportedException:对应 405 Method Not Allowed
    当客户端用了接口不支持的请求方法时会自动触发(比如用POST请求一个只开放GET的接口),也能手动抛出它来明确提示请求方法不合法。

  • MissingServletRequestParameterException:对应 400 Bad Request
    当必填的请求参数缺失时会自动抛出,手动抛出它可以清晰告知用户某个必填参数没传。

  • ResourceNotFoundException:对应 404 Not Found
    Spring Boot 2.3版本之后新增的异常,专门用来表示请求的资源不存在,直接抛这个比自己定义404异常要方便得多。

  • AccessDeniedException:对应 403 Forbidden
    用来表示用户没有权限访问目标资源,Spring Security场景下也会自动抛出这个异常。

  • HttpMediaTypeNotSupportedException:对应 415 Unsupported Media Type
    当客户端发送的请求Content-Type是服务器不支持的类型时抛出(比如接口只接受JSON,但客户端发了multipart/form-data)。

  • MethodArgumentNotValidException:对应 400 Bad Request
    当你用@Valid或@Validated校验请求参数(比如DTO字段)失败时,框架会自动抛出这个异常,里面还包含了详细的校验失败信息。

另外要提一句:这些异常的映射逻辑是Spring通过ResponseEntityExceptionHandler(Spring Boot默认启用的)或者DefaultHandlerExceptionResolver自动处理的。如果需要自定义错误响应的格式,你可以继承ResponseEntityExceptionHandler重写对应的处理方法,或者用@RestControllerAdvice结合@ExceptionHandler来扩展,但如果只是需要标准的HTTP状态码,直接抛这些内置异常就完全够用了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:35:12