统一异常处理,不需要在每一层上单独捕获异常,只需要关注业务的开发:

代码如下:

@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统一返回结果

最新文章

  1. iOS地图 -- 定位初使用
  2. MFC打开系统关于对话框
  3. 微软专家推荐11个Chrome 插件
  4. MATLAB中plot()画图的颜色线型和希腊字母参数设置
  5. 我与python3擦肩而过(三)—— 我去。。又是编码问题——urllib.parse.unquote
  6. 020. asp.net访问Excel文件
  7. 【html5】这些新类型 能提高生产力
  8. DDOS的攻击原理和防护指南
  9. 物理地址为20位 如10000H 用段地址*16+偏移地址表示
  10. 从基于idea的第一个javaweb项目到shell脚本项目自动发布(jdk1.8,mysql5.7,maven3.5,tomcat9,subversion,centos7.3)之一
  11. QTP生成随机数字+字母
  12. Windows平台 python 常用包的安装
  13. dynalist 配额
  14. 使用 HttpClient 进行文件上传
  15. [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了
  16. Spring配置中的&quot;classpath:&quot;与&quot;classpath*:&quot;的区别研究(转)
  17. MySQL与Spring事务隔离级别
  18. C语言 &#183; 十进制数转八进制数
  19. RabbitMQ 知识点
  20. authpuppy 认证服务器搭建

热门文章

  1. [SQL] 获取 Microsoft SQL Server 2008 的数据表结构
  2. Swift - WebKit示例解读
  3. iOS - 开发中调试小技巧
  4. 使用SSH工具连接到MySQL
  5. log4j配置输出到多个日志文件(转)
  6. windows下安装redis(转)
  7. 三个小时学会wordpress模板制作
  8. mongodb 的使用
  9. SVN Checkout 不包括源文件夹根目录
  10. thinkphp5使用PHPMailler发送邮件