全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Spring Boot统一异常处理详解

Spring Boot中默认带了error的映射,但是这个错误页面显示给用户并不是很友好。

统一异常处理

通过使用@ControllerAdvice定义统一异常处理的类,而不是在每个Controller中逐个定义。

@ExceptionHandler用来定义函数针对的函数类型,最后将Exception对象和请求URL映射到URL中。

@ControllerAdvice
class ExceptionTranslator {
 public static final String DEFAULT_ERROR_VIEW = "error";
 @ExceptionHandler(value = Exception.class)
 public ModelAndView defaultErrorHandler(HttpServletRequest req, Exception e) throws Exception {
  ModelAndView mav = new ModelAndView();
  mav.addObject("exception", e);
  mav.addObject("url", req.getRequestURL());
  mav.setViewName(DEFAULT_ERROR_VIEW);
  return mav;
 }
}

实现error.html页面展示

在templates目录下创建error.html。

例如:

<!DOCTYPE html> 
<html> 
<head lang="en"> 
 <meta charset="UTF-8" />
 <title>统一异常处理</title>
</head> 
<body> 
 <h1>Error Handler</h1>
 <div th:text="${url}"></div>
 <div th:text="${exception.message}"></div>
</body> 
</html>

返回使用Json格式

只需在@ExceptionHandler之后加入@ResponseBody,就能让处理函数return的内容转换为JSON格式

创建一个JSON返回对象,如:

public class ErrorDTO implements Serializable {
 private static final long serialVersionUID = 1L;
 private final String message;
 private final String description;
 private List<FieldErrorDTO> fieldErrors;
 //getter和setter省略
}

可以为指定的Exception添加异常处理

@ExceptionHandler(ConcurrencyFailureException.class)
 @ResponseStatus(HttpStatus.CONFLICT)
 @ResponseBody
 public ErrorDTO processConcurencyError(ConcurrencyFailureException ex) {
  return new ErrorDTO(ErrorConstants.ERR_CONCURRENCY_FAILURE);
 }

ErrorConstants.ERR_CONCURRENCY_FAILURE 是定义的一个异常信息。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。


# spring  # boot  # 统一异常  # 异常处理  # 全局异常  # Spring Boot 中的默认异常处理机制解析(如 /error&n  # SpringBoot实现全局异常处理方法总结  # Spring Boot全局异常处理解析  # 详解Springboot自定义异常处理  # Springboot之自定义全局异常处理的实现  # springboot全局异常处理详解  # SpringBoot中默认异常处理机制的实现  # 只需  # 不是很  # 能让  # 这篇文章  # 后将  # 带了  # 转换为  # 创建一个  # 而不是  # 目录下  # 在每个  # 有疑问  # throws  # req  # addObject  # mav  # ModelAndView  # DEFAULT_ERROR_VIEW  # HttpServletRequest  # defaultErrorHandler 


相关文章: 网站制作壁纸教程视频,电脑壁纸网站?  微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?  建站之星后台密码如何安全设置与找回?  如何用AWS免费套餐快速搭建高效网站?  建站之星导航菜单设置与功能模块配置全攻略  常州企业网站制作公司,全国继续教育网怎么登录?  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  建站之星各版本价格是多少?  如何通过建站之星自助学习解决操作问题?  建站之星后台搭建步骤解析:模板选择与产品管理实操指南  小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?  5种Android数据存储方式汇总  油猴 教程,油猴搜脚本为什么会网页无法显示?  如何快速登录WAP自助建站平台?  如何用好域名打造高点击率的自主建站?  如何快速搭建FTP站点实现文件共享?  上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?  为什么Go需要go mod文件_Go go mod文件作用说明  建站10G流量真的够用吗?如何应对访问高峰?  创业网站制作流程,创业网站可靠吗?  桂林网站制作公司有哪些,桂林马拉松怎么报名?  如何在七牛云存储上搭建网站并设置自定义域名?  建站主机如何安装配置?新手必看操作指南  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  网站制作费用多少钱,一个网站的运营,需要哪些费用?  建站之星如何优化SEO以实现高效排名?  建站为何优先选择香港服务器?  如何用美橙互联一键搭建多站合一网站?  建站上传速度慢?如何优化加速网站加载效率?  网站制作难吗安全吗,做一个网站需要多久时间?  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  Java解压缩zip - 解压缩多个文件或文件夹实例  建站之星展会模版如何一键下载生成?  制作网站怎么制作,*游戏网站怎么搭建?  如何快速启动建站代理加盟业务?  长沙做网站要多少钱,长沙国安网络怎么样?  如何配置FTP站点权限与安全设置?  如何在建站之星绑定自定义域名?  香港服务器建站指南:免备案优势与SEO优化技巧全解析  ,制作一个手机app网站要多少钱?  如何通过虚拟主机快速搭建个人网站?  广州商城建站系统开发成本与周期如何控制?  济南企业网站制作公司,济南社保单位网上缴费步骤?  详解jQuery中基本的动画方法  实现点击下箭头变上箭头来回切换的两种方法【推荐】  广州网站建站公司选择指南:建站流程与SEO优化关键词解析  如何在IIS7中新建站点?详细步骤解析  如何快速查询网站的真实建站时间?  Android自定义控件实现温度旋转按钮效果 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。