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. Django mysql应用

    环境:python3.Django2 1.安装驱动mysqlclient pip3 install mysqlclient 2.创建一个数据库 CREATE DATABASE database_nam ...

  2. MyISAM与InnoDB的区别是什么?

    1. 存储结构 MyISAM:每个MyISAM在磁盘上存储成三个文件.第一个文件的名字以表的名字开始,扩展名指出文件类型..frm文件存储表定义.数据文件的扩展名为.MYD (MYData).索引文件 ...

  3. Jenkins实践之入门体验

    官网:https://jenkins.io/ 持续集成,快速发布是DevOps实践的最好方式. 目录 准备工作 下载/安装/启动 基础配置 插件配置 构建第一个Java项目 部署项目 准备工作 在使用 ...

  4. mysql远程连接很慢问题解决

    mysql开启远程访问发现从远程连接每次都在5秒以上,从本机连接很快. 解决方案: [mysqld] 标签下添加一行配置 skip-name-resolve 重启mysqld服务, 问题解决!

  5. 不同IDE对maven项目静态资源处理

    今天自己构建maven管理的web项目,参照另一位兄弟的代码,发现他的静态资源,也就是html.js之类的文件是在src/main/resource目录下的,我的在src/main/resource目 ...

  6. 开发一个项目之css

    background属性 5+3 image,color,position,repeat,attachment size: 保持纵横比 contain 再发大就cover了 clip:背景绘制区域 b ...

  7. tomcat用redis做session共享

    在context.xml添加以下配置: <Valve className="com.radiadesign.catalina.session.RedisSessionHandlerVa ...

  8. Python爬虫从入门到进阶(4)之xpath的使用

    官网地址:https://lxml.de/xpathxslt.html 导入: from lxml import etree lxml.tree 支持 ElementTree 和 Element 上的 ...

  9. 20175315 《Java程序设计》第6周学习总结

    20175215 <Java程序设计>第6周学习总结 教材学习内容总结 第七章主要讲的是内部类,匿名类,异常类等等. 内部类:Java支持在一个类中定义另一个类,称作内部类,包含内部类的类 ...

  10. FF D8 FF FE 00 24 47 00转图片

    String[] img = "FF D8 FF FE 00 24 47 00 9D 0C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 F0 0 ...