博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Cloud Spring Boot mybatis分布式微服务云架构(十一)Web应用的统一异常处理...
阅读量:6671 次
发布时间:2019-06-25

本文共 1462 字,大约阅读时间需要 4 分钟。

hot3.png

我们在做Web应用的时候,请求处理过程中发生错误是非常常见的情况。Spring Boot提供了一个默认的映射:/error,当处理中抛出异常之后,会转到该请求中处理,并且该请求有一个全局的错误页面用来展示异常内容。

选择一个之前实现过的Web应用()为基础,启动该应用,访问一个不存在的URL,或是修改处理内容,直接抛出异常,如:

@RequestMapping("/hello")  public String hello() throws Exception {      throw new Exception("发生错误");  }

此时,可以看到类似下面的报错页面,该页面就是Spring Boot提供的默认error映射页面。

alt=默认的错误页面

统一异常处理

虽然,Spring Boot中实现了默认的error映射,但是在实际应用中,上面你的错误页面对用户来说并不够友好,我们通常需要去实现我们自己的异常提示。

下面我们以之前的Web应用例子为基础(),进行统一异常处理的改造。

  • 创建全局异常处理类:通过使用@ControllerAdvice定义统一的异常处理类,而不是在每个Controller中逐个定义。@ExceptionHandler用来定义函数针对的异常类型,最后将Exception对象和请求URL映射到error.html
  • @ControllerAdvice  class GlobalExceptionHandler {        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,将请求的URL和Exception对象的message输出。

  •           
    统一异常处理

    Error Handler

    启动该应用,访问:http://localhost:8080/hello,可以看到如下错误提示页面。

  • 通过实现上述内容之后,我们只需要在Controller中抛出Exception,当然我们可能会有多种不同的Exception。然后在@ControllerAdvice类中,根据抛出的具体Exception类型匹配@ExceptionHandler中配置的异常类型来匹配错误映射和处理。

转载于:https://my.oschina.net/u/3873725/blog/1825098

你可能感兴趣的文章
《众妙之门——自由网站设计师成功之道》一1.7 像专业人士一样出击
查看>>
百度 360 诉讼案宣判 360 败诉
查看>>
《SolidWorks 2016中文版机械设计从入门到精通》——2.3 草图编辑
查看>>
《OpenGL编程指南》一1.5 第一个程序:深入分析
查看>>
Reddit 事实核查新方法,人为劝导和智能算法结合
查看>>
Chrome 57 Beta 新特性 改进了 Add to Home Screen
查看>>
Java 学习线路图是怎样的?
查看>>
Spark源码分析 – DAGScheduler
查看>>
《设计模式解析(第2版•修订版)》—第1章 1.6节面向对象范型
查看>>
《手机测试Robotium实战教程》—第2章2.2节Eclipse的安装
查看>>
《Android游戏开发详解》一2.2 设置开发机器
查看>>
《数据分析变革:大数据时代精准决策之道》一第2章 更多数据……巨多数据……大数据!...
查看>>
《万物互联》——2.5 审视无线技术
查看>>
IO调度算法学习
查看>>
《制造业中的机器人、自动化和系统集成》—— 3.8 安全与防护
查看>>
MariaDB Galera Cluster 部署
查看>>
《游戏机制——高级游戏设计技术》一2.4 渐进型游戏
查看>>
《系统分析师UML项目实战》—第1章1.1节现场的作业程序
查看>>
android 添加React Native支持
查看>>
《C语言及程序设计》实践参考——一元二次方程全解
查看>>