springboot2 统一异常处理
2024-10-19 20:27:55
统一异常处理,不需要在每一层上单独捕获异常,只需要关注业务的开发:
代码如下:
@RestControllerAdvice
@Slf4j
public class GlobalExceptionHandler { @ExceptionHandler(value = Exception.class)
public AjaxResponse handler(Exception e){
AjaxResponse r = new AjaxResponse();
if (e instanceof RuntimeException){
RuntimeException selectNoFindException = (RuntimeException) e;
r.setStatus(-1);
r.setMsg(selectNoFindException.getMessage());
} else {
r.setStatus(-1);
r.setMsg("系统错误");
}
log.error(e.getMessage());
return r;
}
}
其中AjaxResponse的源码定义如下:
package com.crhms.medicareopinion.model; import lombok.Data; @Data
public class AjaxResponse<T> { private Integer status; private String msg; private T data; }
解释一下:
1. 异常要分类,主要是因为异常的错误消息要传递给前端显示,如果我们直接把所有的异常消息给前端,就会有诸如错误码,空指针类似的消息,显示是不对的。
通常来说,自定义的异常是把错误给前端直接显示, 其它异常我们可以固定一个错误消息给前端即可,
2. 把正常的rest返回结果和异常的返回结果 用一个类来封装一下,方便修改,而不是硬编码。请参考下一篇springboot统一返回结果
最新文章
- iOS地图 -- 定位初使用
- MFC打开系统关于对话框
- 微软专家推荐11个Chrome 插件
- MATLAB中plot()画图的颜色线型和希腊字母参数设置
- 我与python3擦肩而过(三)—— 我去。。又是编码问题——urllib.parse.unquote
- 020. asp.net访问Excel文件
- 【html5】这些新类型 能提高生产力
- DDOS的攻击原理和防护指南
- 物理地址为20位 如10000H 用段地址*16+偏移地址表示
- 从基于idea的第一个javaweb项目到shell脚本项目自动发布(jdk1.8,mysql5.7,maven3.5,tomcat9,subversion,centos7.3)之一
- QTP生成随机数字+字母
- Windows平台 python 常用包的安装
- dynalist 配额
- 使用 HttpClient 进行文件上传
- [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了
- Spring配置中的";classpath:";与";classpath*:";的区别研究(转)
- MySQL与Spring事务隔离级别
- C语言 &#183; 十进制数转八进制数
- RabbitMQ 知识点
- authpuppy 认证服务器搭建