统一异常响应结构通过定义Result类、枚举错误码、自定义异常和@ControllerAdvice全局处理,实现API返回一致性。1. 创建Result封装返回数据;2. 定义ErrorCode枚举管理错误码;3. 设计BusinessException携带错误信息;4. 使用@ControllerAdvice统一拦截异常并转换为Result格式;5. 控制器中抛出异常自动返回标准化错误。该方案提升前后端协作效率,隐藏敏感信息,增强可维护性。

在Java开发中,特别是基于Spring Boot的Web项目里,设计统一的异常响应结构能提升API的可读性和前后端协作效率。当系统发生异常时,返回结构清晰、字段一致的错误信息,有助于前端快速定位问题。
定义统一的响应体格式
首先创建一个通用的响应类,用于封装所有接口的返回数据,包括正常结果和异常情况。
示例:Result 类
public class Result{ private int code; private String message; private T data; public static Result success(T data) { Result result = new Result<>(); result.code = 200; result.message = "success"; result.data = data; return result; } public static Result error(int code, String message) { Result result = new Result<>(); result.code = code; result.message = message; return result; } // getter 和 setter 省略 }
定义业务异常与错误码
通过枚举管理常见错误码,避免硬编码,增强可维护性。
立即学习“Java免费学习笔记(深入)”;
大小仅1兆左右 ,足够轻便的商城系统; 易部署,上传空间即可用,安全,稳定; 容易操作,登陆后台就可设置装饰网站; 并且使用异步技术处理网站数据,表现更具美感。 前台呈现页面,兼容主流浏览器,DIV+CSS页面设计; 如果您有一定的网页设计基础,还可以进行简易的样式修改,二次开发, 发布新样式,调整网站结构,只需修改css目录中的css.css文件即可。 商城网站完全独立,网站源码随时可供您下载
public enum ErrorCode {
SYSTEM_ERROR(500, "系统内部错误"),
RESOURCE_NOT_FOUND(404, "资源未找到"),
INVALID_PARAM(400, "参数无效");
private final int code;
private final String message;
ErrorCode(int code, String message) {
this.code = code;
this.message = message;
}
public int getCode() { return code; }
public String getMessage() { return message; }
}
同时可以设计一个自定义异常类,携带错误码和动态消息:
public class BusinessException extends RuntimeException {
private final int code;
public BusinessException(ErrorCode errorCode, String message) {
super(message);
this.code = errorCode.getCode();
}
public int getCode() { return code; }
}
使用@ControllerAdvice全局处理异常
通过 @ControllerAdvice 拦截所有控制器抛出的异常,统一转换为Result格式返回。
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(BusinessException.class)
@ResponseBody
public Result
在控制器中使用示例
正常返回和异常抛出都保持一致性:
@RestController
public class UserController {
@GetMapping("/user/{id}")
public Result getUser(@PathVariable Long id) {
if (id <= 0) {
throw new BusinessException(ErrorCode.INVALID_PARAM, "ID必须大于0");
}
User user = userService.findById(id);
if (user == null) {
throw new BusinessException(ErrorCode.RESOURCE_NOT_FOUND, "用户不存在");
}
return Result.success(user);
}
}
基本上就这些。统一异常响应的核心在于:规范返回结构、集中异常处理、区分异常类型、对外隐藏敏感信息。这样既能保证接口一致性,也便于后期扩展和维护。









