1.自定义错误页面

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

如果需要将所有的异常同一跳转到自定义的错误页面,需要再src /main/resources/templates目录下创建error.html页面。注意:名称必须叫error.

2.@ExceptionHandle注解处理异常

@Controller
public class DemoController {

@RequestMapping("/show")
public String showInfo() {
     String string = null;
     string.length();
     return "index";
}

@RequestMapping("/show2")
public String showInfo2() {
     int a = 10 / 0;
     return "index";
}

/**
* java.lang.ArithmeticException 该方法需要返回一个ModelAndView :目的是可以让我们封装异常信息以及视图指定
* Exception e : 会将产生异常对象注入到方法中
*
* @param e
* @return
*/

@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.ArithmeticException 该方法需要返回一个ModelAndView :目的是可以让我们封装异常信息以及视图指定
* Exception e : 会将产生异常对象注入到方法中
* @param e
* @return
*/

@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;
    }
}

3.@ControllerAdvice+@ExceptionHandler注解处理异常

@ControllerAdvice
public class GlobalException {

@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;
}

@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;
     }
}

4.配置SimpleMappingExceptionResolver处理异常

/**
* 通过SimpleMappingExceptionResolver做全局异常处理
*
* @author Lenovo
*
*/
@Configuration
public class GlobalException {

/**
* 该方法必须有返回值类型,返回值类型为:SimpleMappingExceptionResolver
*/
@Bean
public SimpleMappingExceptionResolver geSimpleMappingExceptionResolver() {
     SimpleMappingExceptionResolver resolver = new SimpleMappingExceptionResolver();
     Properties mappings = new Properties();
/**
* 参数一:异常的类型,必须是异常类型的全名
* 参数二:视图名称
*/
    mappings.put("java.lang.ArithmeticException", "error1");
    mappings.put("java.lang.NullPointerException", "error2");
// 设置异常与视图的映射信息
    resolver.setExceptionMappings(mappings);
    return resolver;
    }
}

5.自定义HandlerExceptionResolver类处理异常

/**
* 通过实现HandlerExceptionResolver做全局异常处理
*
* @author Lenovo
*
*/
@Configuration
public class GlobalException implements HandlerExceptionResolver {

@Override
public 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;
  }

}

SpringBoot中对于异常处理的提供的五种处理方式的更多相关文章

  1. SpringBoot学习笔记(6)----SpringBoot中使用Servlet,Filter,Listener的三种方式

    在一般的运用开发中Controller已经大部分都能够实现了,但是也不排除需要自己实现Servlet,Filter,Listener的方式,SpringBoot提供了三种实现方式. 1. 使用Bean ...

  2. iOS开发中数组常用的五种遍历方式

    随着iOS的不断发展,apple也不断推出性能更高的数组遍历方式,下面将对熟悉的五种遍历方式进行列举. 首先定义一个数组,并获取数组长度 NSArray *array=@[",]; NSIn ...

  3. Django中提供的6种缓存方式

    由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用: 缓存,缓存将一个某个views的返回值保存至内存或者memcache中, ...

  4. LFU五种实现方式,从简单到复杂

    前言 最近刷力扣题,对于我这种 0 基础来说,真的是脑壳疼啊.这个月我估计都是中等和困难题,没有简单题了. 幸好,力扣上有各种大牛给写题解.看着他们行云流水的代码,真的是羡慕不已.让我印象最深刻的就是 ...

  5. Spring事务Transaction配置的五种注入方式详解

    Spring事务Transaction配置的五种注入方式详解 前段时间对Spring的事务配置做了比较深入的研究,在此之间对Spring的事务配置虽说也配置过,但是一直没有一个清楚的认识.通过这次的学 ...

  6. BigDecimal提供了8种舍入方式

    BigDecimal提供了8种舍入方式 1.ROUND_UP:舍入远离零的舍入模式.在丢弃非零部分之前始终增加数字(始终对非零舍弃部分前面的数字加1).注意,此舍入模式始终不会减少计算值的大小. 2. ...

  7. IPC五种通讯方式

    IPC五种通讯方式 1.管道:速度慢,容量有限,只有父子进程能通讯 2.FIFO:任何进程间都能通讯,但速度慢 3.消息队列:容量受到系统限制,且要注意第一次读的时候,要考虑上一次没有读完数据的问题 ...

  8. spring事务——try{...}catch{...}中事务不回滚的几种处理方式(转载)

    转载自   spring事务——try{...}catch{...}中事务不回滚的几种处理方式   当希望在某个方法中添加事务时,我们常常在方法头上添加@Transactional注解 @Respon ...

  9. CacheConcurrencyStrategy五种缓存方式

    CacheConcurrencyStrategy有五种缓存方式:  CacheConcurrencyStrategy.NONE,不适用,默认  CacheConcurrencyStrategy.REA ...

随机推荐

  1. thrift使用

    一.什么是thrift Thrift是一种接口描述语言和二进制通讯协议,它被用来定义和创建跨语言的服务.它被当作一个远程过程调用(RPC)框架来使用,是由FaceBook为“大规模跨语言服务开发”而开 ...

  2. hive 时间函数

    使用时发现:1.datediff可以传入timestamp类型参数     官网文档: Date Functions The following built-in date functions are ...

  3. 基于jeesite的cms系统(七):GlobalException全局异常和部署

    关于全局异常: 在业务代码中专注处理业务,而不是返回各种CodeMsg(比如这里只需要知道登录时成功还是失败,其余情况直接抛出异常),可以直接抛出异常,添加一个全局异常类,根据CodeMsg来生成异常 ...

  4. Jupyter Notebook中的快捷键

    1.快捷键 Jupyter Notebook 有两种键盘输入模式.编辑模式,允许你往单元中键入代码或文本:这时的单元框线是绿色的.命令模式,键盘输入运行程序命令:这时的单元框线是灰色. 命令模式 (按 ...

  5. Linux系统GNOME主题安装与Tweaks工具使用

    需要软件: GNOME Tweaks--使主题修改更加容易一个工具 安装主题: 下载主题:mac themes下载链接:https://www.gnome-look.org/p/1241688/ 这里 ...

  6. 推荐.Net、C# 逆向反编译四大工具利器

    转自:https://blog.csdn.net/kongwei521/article/details/54927689 在项目开发过程中,估计也有人和我遇到过同样的经历:运行环境出现了重大Bug亟需 ...

  7. java -jar和hadoop jar的区别

    hadoop jar可以看做是java -jar的升级,可以和它一样带参数,程序一样的解析 不同的是hadoop jar运行的jar包他会依赖于hadoop安装目录下面的一些环境,并且你jar包里指定 ...

  8. [系统集成] 基于telegraf, influxdb, grafana 建立 esxi 监控

    之前在 nagios 上建立了 esxi 监控,指标少.配置麻烦.视觉效果差.最近我把 esxi 监控迁移到了 influxdb+grafana 平台上,无论是监控指标.可操作性还是视觉效果都有了很大 ...

  9. imageview设置图片时超长超大图片超出限制(OpenGLRenderer: Bitmap too large to be uploaded into a texture (996x9116, max=4096x4096))

    问题:遇到超长图片,宽长等比缩放,比如宽度同屏幕同宽,长度等比放大,放到后遇到长度超出OpenGLRenderer的最大限制,导致图片无法显示出来: 解决办法: //图片超出GPU对于openglRe ...

  10. python爬虫之xpath的基本使用

    一.简介 Xpath是一门在XML文档中查找信息的语言.Xpath可用来在XML文档中对元素和属性进行遍历.Xpath是W3C XSLT标准的主要元素,并且XQuery和XPointer都构建于XPa ...