通过@ControllerAdvice统一处理异常,结合自定义异常类与日志记录,实现Java项目中异常的集中管理与标准化响应。

在Java中统一管理异常处理逻辑,核心是通过全局异常处理器、自定义异常类和日志记录相结合的方式,避免重复代码,提升可维护性。重点在于集中捕获和处理异常,而不是在每个方法中单独处理。
使用@ControllerAdvice处理Web层异常
在Spring Boot或Spring MVC项目中,@ControllerAdvice 是统一处理控制器层异常的关键注解。它能全局拦截所有Controller抛出的异常,并返回标准化的响应格式。
示例:
@ControllerAdvicepublic class GlobalExceptionHandler { @ExceptionHandler(BusinessException.class) public ResponseEntity handleBusinessException(BusinessException e) { ErrorResponse error = new ErrorResponse("BUSINESS_ERROR", e.getMessage()); return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(error); } @ExceptionHandler(NotFoundException.class) public ResponseEntity handleNotFoundException(NotFoundException e) { ErrorResponse error = new ErrorResponse("NOT_FOUND", e.getMessage()); return ResponseEntity.status(HttpStatus.NOT_FOUND).body(error); } @ExceptionHandler(Exception.class) public ResponseEntity handleUnexpectedException(Exception e) { ErrorResponse error = new ErrorResponse("INTERNAL_ERROR", "系统内部错误"); // 记录详细日志 log.error("未预期异常:", e); return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(error); }}
这样所有Controller中抛出的异常都会被自动捕获并返回统一结构,前端更容易解析处理。
立即学习“Java免费学习笔记(深入)”;
定义分层的自定义异常体系
不要直接抛出Exception或RuntimeException,而是根据业务场景创建有意义的异常类型,比如:
BusinessException:业务校验失败,如参数不合法、余额不足等 ServiceException:服务层执行异常,如远程调用失败 DataAccessException:数据库操作异常
这些异常可以继承RuntimeException,便于在事务中自动回滚,同时携带错误码和提示信息,方便前端展示。
易森网络企业版
如果您是新用户,请直接将本程序的所有文件上传在任一文件夹下,Rewrite 目录下放置了伪静态规则和筛选器,可将规则添加进IIS,即可正常使用,不用进行任何设置;(可修改图片等)默认的管理员用户名、密码和验证码都是:yeesen系统默认关闭,请上传后登陆后台点击“核心管理”里操作如下:进入“配置管理”中的&ld
0 查看详情
结合AOP记录关键异常日志
对于需要额外监控的异常(如调用第三方接口失败),可以通过AOP在异常抛出时自动记录上下文信息,比如请求参数、用户ID等,有助于排查问题。
例如,在切面中捕获特定方法的异常并打点日志,而无需在每个方法里写log.error()。
统一API响应格式
配合全局异常处理,定义一致的返回结构,如:
{ "code": "BUSINESS_ERROR", "message": "用户名已存在", "timestamp": "2024-04-05T10:00:00"}
这样前端可以统一根据code字段做不同处理,降低耦合。
基本上就这些。关键是把异常当成流程的一部分来设计,而不是补丁。合理分层、统一出口,代码会更清晰稳定。
以上就是在Java中如何统一管理异常处理逻辑的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/870928.html
微信扫一扫
支付宝扫一扫