Java中如何实现Springboot全局异常处理
发表于:2024-09-23 作者:千家信息网编辑
千家信息网最后更新 2024年09月23日,这篇文章主要为大家展示了"Java中如何实现Springboot全局异常处理",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Java中如何实现Springb
千家信息网最后更新 2024年09月23日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安全错误
数据库的锁怎样保障安全
苏州胜界网络技术服务有限公司
上海软件开发平均待遇
knex操作数据库
dna犯罪数据库包括什么库
打印服务器怎样连接硬盘
http搭建服务器
数据库管理员岗位职责
湖北大学民族科技学院互联网
简述嵌入式系统与软件开发
网络安全人人有责手抄报彩铅
mysql查询数据库实例
软件开发对项目的总结
地区网络安全分析
大数据网络安全监测系统
数据库如何查询课程信息
服务器 采集卡
威金斯数据库
伍佰万互联网科技靠谱吗
网络技术测试卷
服务器风扇数量怎么确定
去哪看微信公众号数据库
e4a连接数据库
数据库oracle 银行
湖南有几台服务器虚拟主机
服务器阵列卡用在台式机
服务器 采集卡
数据库安全的目的
云计算网络安全工程师前景
榴莲微视软件开发
网络安全防范案情简要