Java中如何实现Springboot全局异常处理
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要为大家展示了"Java中如何实现Springboot全局异常处理",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Java中如何实现Springb
千家信息网最后更新 2026年11月01日Java中如何实现Springboot全局异常处理
这篇文章主要为大家展示了"Java中如何实现Springboot全局异常处理",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Java中如何实现Springboot全局异常处理"这篇文章吧。
一、思路?
springboot提供了全局异常处理的注解,我们需要弄明白的是。扑捉什么异常,结果如果返回,如何优雅的管理返回的结果集。
二、步骤
1.自定义接口:
自定义接口主要是描述返回的code码和返回msg,自定义错误描述枚举需要实现这个接口
public interface ErrorType { /** * 返回code * * @return */ String getCode(); /** * 返回mesg * * @return */ String getMesg();}2.自定义错误枚举
使用枚举,看起来代码很优雅,并且不用使用static final来定义类型。
@Getterpublic enum SystemErrorType implements ErrorType { SYSTEM_ERROR("-1", "系统异常"), SYSTEM_BUSY("000001", "系统繁忙,请稍候再试"); /** * 错误类型码 */ private String code; /** * 错误类型描述信息 */ private String mesg; SystemErrorType(String code, String mesg) { this.code = code; this.mesg = mesg; }}3.自定义异常类
@Getterpublic class MyException extends RuntimeException{ /** * 异常对应的错误类型 */ private final ErrorType errorType; /** * 默认是系统异常 */ public MyException () { this.errorType = SystemErrorType.SYSTEM_ERROR; } public MyException(SystemErrorType systemErrorType) { this.errorType = systemErrorType; }4.异常捕获
@RestControllerAdvice@Slf4jpublic class GlobalExceptionHandlerAdvice extends DefaultGlobalExceptionHandlerAdvice { @ExceptionHandler(value = {MyException .class}) public Result MyException (MyException ex) { log.error(ex.getMessage()); return Result.fail(ex.getErrorType()); } @ExceptionHandler(value = {NotRoleException.class}) public Result NotRoleException(NotRoleException nle) { // 打印堆栈,以供调试 //nle.printStackTrace(); String message = "该功能仅供"+nle.getRole()+"使用!"; // 返回给前端 return Result.fail("090017",message,null); }}也不是说只能通过枚举来返回,只要你的返回工具类支持参数填写,可以做类似于第二种的返回,但是这样方法对于返回的code来太好管理
5.在代码中抛异常
比如我做判空处理时,利用枚举作为参数返回
@PostMapping("/listQuestionVO") public Result listQuestionBankVO(@RequestBody QuestionBankQuery query){ if (query.getPageNum()==null || query.getPageSize()==null){ return Result.fail(QuestionnaireErrorType.PARAMETERISNULL_ERROR); } Result result = questionBankService.listQuestionBankVO(query); return result; }实际上,你可以在你需要处理异常的地方直接throws异常,可以直接在方法上throws抛出,等待全局异常捕获
以上是"Java中如何实现Springboot全局异常处理"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
处理
全局
错误
类型
内容
接口
篇文章
系统
优雅
代码
参数
方法
结果
学习
帮助
管理
繁忙
不用
信息
前端
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网络科技
科技服务与互联网
万易互联网科技
善班互联网科技
奇酷互联网科技公司
广州宏创互联网科技
互联网 视角下的科技创新
互联网金融科技委员会
恒银科技与互联网金融
金融科技与互联网金融相同和不同
互联网科技项目计划书材料类
互联网还是高科技吗
上海宁丞科技互联网
互联网科技革命什么开始
民营互联网公司国防科技
畅思互联网科技
互联网科技的全部知识
江苏苏星互联网科技有限公司
扫呗互联网科技有限公司
互联网科技品牌
深圳恒合互联网络科技有限公司
互联网科技与金融科技
科技制造互联网公司
互联网科技上市公司
银川新华互联网科技学校地址
欧洲十大科技互联网公司
崇明区互联网教育科技售后服务
搜狐科技互联网
如何创新互联网科技
深圳无忧互联网科技