Version: 中文
错误处理体系改进
问题分析
原有问题
- 混乱的错误码: 所有空指针异常都返回
402: "用户名错误" - 不清晰的错误信息: 错误信息不能反映真实问题
- 缺少错误分类: 没有统一的错误码规范
- 空指针处理不当: 接口没有空值检查
解决方案
1. 创建统一错误码枚举 (ResultCode.java)
错误码分类
| 类别 | 错误码范围 | 说明 |
|---|---|---|
| 成功 | 200 | 操作成功 |
| 客户端错误 | 4xx | 请求错误 |
| 认证错误 | 401-408 | 登录认证相关 |
| 数据错误 | 41xx | 数据相关错误 |
| 文章错误 | 42xx | 文章相关错误 |
| 服务器错误 | 5xx | 服务器内部错误 |
2. 增强 Result 类
// 使用 ResultCode 返回成功
public static Result succ(ResultCode resultCode, Object data)
// 使用 ResultCode 返回失败
public static Result fail(ResultCode resultCode)
3. 完善全局异常处理器
改进空指针异常处理
之前:
return Result.fail(402, "用户名错误", null); // ❌ 错误!
现在:
log.error("空指针异常,请检查数据是否存在", e);
log.error("空指针异常发生位置: {}", errorLocation);
return Result.fail(ResultCode.NULL_POINTER_ERROR,
"数据不存在或为空,请检查相关数据是否已配置", null);
错误响应示例
之前 (混乱)
{
"code": 402,
"msg": "用户名错误",
"data": null
}
现在 (清晰)
空指针异常
{
"code": 4103,
"msg": "数据不存在或为空,请检查相关数据是否已配置",
"data": null
}
用户名不存在
{
"code": 402,
"msg": "用户名不存在",
"data": null
}
文章不存在
{
"code": 4200,
"msg": "文章不存在",
"data": null
}
日志改进
之前
ERROR - 空值异常
现在
ERROR - 空指针异常,请检查数据是否存在
ERROR - 空指针异常发生位置: MiniProgrammeController.GetArticleBtmatter:157
WARN - 文章ID: 5 的作者ID: 999 不存在
总结
改进效果
| 方面 | 改进前 | 改进后 |
|---|---|---|
| 错误码 | 混乱,不相关 | 清晰,有分类 |
| 错误信息 | 不准确 | 准确反映问题 |
| 空指针处理 | 全局返回"用户名错误" | 具体定位问题 |
| 日志信息 | 简单 | 详细的位置和上下文 |
| 可维护性 | 困难 | 容易定位和修复 |
改进日期: 2025-12-09 状态: ✅ 已完成 影响范围: 全局错误处理、所有Controller
Was this helpful?