Java中应封装异常信息,使用自定义运行时异常承载业务语义、错误码、可读消息及原始异常链;通过错误码枚举统一管理,配合参数化消息格式;在DAO、Service、Controller层分层封装,返回标准化API响应并过滤敏感信息。
在Java中封装异常信息,核心是让错误既便于开发排查,又对业务友好。不建议直接抛原始异常(比如NullPointerException或SQLException),而应统一用自定义运行时异常承载业务语义、错误码、可读消息和原始异常链。
用枚举集中管理所有业务错误场景,每个条目包含唯一编码、简明描述,支持参数化填充:
USER_NOT_FOUND("USR001", "用户不存在,ID={0}")
MessageFormat.format()实现动态消息生成不强制上层处理,符合多数Web/微服务场景习惯;关键字段包括错误码、消息、原始异常(cause):
getMessage()确保返回面向用户的提示,而非堆栈
getCause()供日志或调试时追溯底层原因不是所有异常都需要封装,重点在模块边界和对外接口处:
SQLException → 封装为DataAccessException,附带SQL执行上下文ValidationExceptio
n,含字段名与规则API响应对象中预留错误字段,避免把异常细节直接暴露给前端:
status("error")、code("USR001")、message("用户不存在,ID=123")、timestamp
stackTrace输出,调试环境可选开启