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

Spring Rest中与JAX-RS WebApplicationException等价的异常处理方案

Spring中替代JAX-RS WebApplicationException的异常处理方案

直接使用Spring自带的ResponseStatusException(最便捷)

Spring 5及以上版本提供了ResponseStatusException,可以直接替代JAX-RS的WebApplicationException,无需修改接口返回类型(保持返回字符串即可)。

替换后的代码:

if(file == null) {
    throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Not Found");
}

Spring会自动捕获这个异常,将响应状态码设为404,并把消息体返回给客户端,完全符合你的需求,且改造工作量极小。

自定义异常+全局异常处理器(适合统一管理多场景)

如果需要统一管理多种业务异常场景,可以自定义异常类配合全局处理器:

  1. 自定义异常类:
public class ResourceNotFoundException extends RuntimeException {
    public ResourceNotFoundException(String message) {
        super(message);
    }
}
  1. 编写全局异常处理器:
@RestControllerAdvice
public class GlobalExceptionHandler {
    @ExceptionHandler(ResourceNotFoundException.class)
    public ResponseEntity<String> handleResourceNotFound(ResourceNotFoundException ex) {
        return ResponseEntity.status(HttpStatus.NOT_FOUND).body(ex.getMessage());
    }
}
  1. 接口中抛出异常:
if(file == null) {
    throw new ResourceNotFoundException("Not Found");
}

这种方式适合后续扩展更多异常场景,统一处理响应格式。

两种方案都不需要修改原有接口的返回类型(保持返回字符串),对比你提到的ResponseEntity方式,能大幅减少改造工作量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 22:39:50