博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
$.getjson异常信息提示_SpringBoot 异常处理
阅读量:6469 次
发布时间:2019-06-23

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

f9f812887524c4dca5873046695cd26c.png

1 SpringBoot 中对于异常处理提供了五种处理方式

1.1自定义错误页面

SpringBoot 默认的处理异常的机制:SpringBoot 默认的已经提供了一套处理异常的机制。

一旦程序中出现了异常 SpringBoot 会像/error 的 url 发送请求。在 springBoot 中提供了一个叫 BasicExceptionController 来处理/error 请求,然后跳转到默认显示异常的页面来展示异常信息。

如 果 我 们 需 要 将 所 有 的 异 常 同 一 跳 转 到 自 定 义 的 错 误 页 面 , 需 要 再

src/main/resources/templates 目录下创建 error.html 页面。注意:名称必须叫 error

错误提示页面出错了,请与管理员联系。。。

1.2@ExceptionHandle 注解处理异常

1.2.1 Controller

/*** SpringBoot 处理异常方式一:自定义错误页面***/@Controllerpublic class DemoController {@RequestMapping("/show")public String showInfo(){String str = null;str.length();return "index";}@RequestMapping("/show2")public String showInfo2(){int a = 10/0;return "index";}/*** java.lang.ArithmeticException* 该方法需要返回一个 ModelAndView:目的是可以让我们封装异常信息以及视图的指定* 参数 Exception e:会将产生异常对象注入到方法中*/@ExceptionHandler(value={java.lang.ArithmeticException.class})public ModelAndView arithmeticExceptionHandler(Exception e){ModelAndView mv = new ModelAndView();mv.addObject("error", e.toString());mv.setViewName("error1");return mv;}/*** java.lang.NullPointerException* 该方法需要返回一个 ModelAndView:目的是可以让我们封装异常信息以及视图的指定* 参数 Exception e:会将产生异常对象注入到方法中*/@ExceptionHandler(value={java.lang.NullPointerException.class})public ModelAndView nullPointerExceptionHandler(Exception e){ModelAndView mv = new ModelAndView();mv.addObject("error", e.toString());mv.setViewName("error2");return mv;}}

1.2.2 页面

错误提示页面-ArithmeticException出错了,请与管理员联系。。。
错误提示页面-NullPointerException</title</head>出错了,请与管理员联系。。。

1.3@ControllerAdvice+@ExceptionHandler 注解处理异常

1.3.1 需要创建一个能够处理异常的全局异常类。在该类上需

要添加@ControllerAdvice 注解

/*** 全局异常处理类***/@ControllerAdvicepublic class GlobalException {/*** java.lang.ArithmeticException* 该方法需要返回一个 ModelAndView:目的是可以让我们封装异常信息以及视图的指定* 参数 Exception e:会将产生异常对象注入到方法中*/@ExceptionHandler(value={java.lang.ArithmeticException.class})public ModelAndView arithmeticExceptionHandler(Exception e){ModelAndView mv = new ModelAndView();mv.addObject("error", e.toString());mv.setViewName("error1");return mv;}/*** java.lang.NullPointerException* 该方法需要返回一个 ModelAndView:目的是可以让我们封装异常信息以及视图的指定* 参数 Exception e:会将产生异常对象注入到方法中*/@ExceptionHandler(value={java.lang.NullPointerException.class})public ModelAndView nullPointerExceptionHandler(Exception e){ModelAndView mv = new ModelAndView();mv.addObject("error", e.toString());mv.setViewName("error2");return mv;}}

1.4配置 SimpleMappingExceptionResolver 处理异常

1.4.1 在全局异常类中添加一个方法完成异常的同一处理

/*** 通过 SimpleMappingExceptionResolver 做全局异常处理***/@Configurationpublic class GlobalException {/*** 该方法必须要有返回值。返回值类型必须是:SimpleMappingExceptionResolver*/@Beanpublic SimpleMappingExceptionResolvergetSimpleMappingExceptionResolver(){SimpleMappingExceptionResolver resolver = newSimpleMappingExceptionResolver();Properties mappings = new Properties();/*** 参数一:异常的类型,注意必须是异常类型的全名* 参数二:视图名称*/mappings.put("java.lang.ArithmeticException", "error1");mappings.put("java.lang.NullPointerException","error2");//设置异常与视图映射信息的resolver.setExceptionMappings(mappings);return resolver;}}

1.5自定义 HandlerExceptionResolver 类处理异常

1.5.1 需 要 再 全 局 异 常 处 理 类 中 实 现

HandlerExceptionResolver 接口

/*** 通过实现 HandlerExceptionResolver 接口做全局异常处理***/@Configurationpublic class GlobalException implements HandlerExceptionResolver {@Overridepublic ModelAndView resolveException(HttpServletRequest request,HttpServletResponse response, Object handler,Exception ex) {ModelAndView mv = new ModelAndView();//判断不同异常类型,做不同视图跳转if(ex instanceof ArithmeticException){mv.setViewName("error1");}if(ex instanceof NullPointerException){mv.setViewName("error2");}mv.addObject("error", ex.toString());return mv;}

转载地址:http://bsdko.baihongyu.com/

你可能感兴趣的文章
[洛谷P3978][TJOI2015]概率论
查看>>
Python字符串的格式化
查看>>
C#反射---属性
查看>>
服务器常用的状态码及其对应的含义如下
查看>>
zoom和transform:scale的区别
查看>>
幸福框架:可扩展的、动态的、万能的 编号生成器
查看>>
黄聪:PHP 防护XSS,SQL,代码执行,文件包含等多种高危漏洞
查看>>
svn status 显示 ~xx
查看>>
常用HiveQL总结
查看>>
[转]使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(三)-- Logger
查看>>
POJ 3311 Hie with the Pie(状压DP + Floyd)
查看>>
HDU 1402 A * B Problem Plus FFT
查看>>
[CareerCup] 17.3 Factorial Trailing Zeros 求阶乘末尾零的个数
查看>>
Security updates and resources
查看>>
深入理解JavaScript系列(25):设计模式之单例模式
查看>>
DNS为什么通常都会设置为14.114.114.114
查看>>
给定一个序列,判断该序列是否为二叉树查找树的后序遍历序列
查看>>
Sqoop架构(四)
查看>>
golang copy函数
查看>>
《你有多少问题要请示》精华集粹
查看>>