SpringBoot中有五种处理异常的方式:

一、自定义错误页面

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

  如果我们需要将所有的异常统一跳转到自定义的错误页面,需要在src/main/resources/templates目录下创建error.html页面。并添加这个标签。

  <span th:text="${exception}"></span>

二、@ExceptionHandle注解处理异常

  只需要在controller中添加这样的方法:

 @ExceptionHandler(value={java.lang.ArithmeticException.class})
public ModelAndView arithmeticExceptionHandler(Exception e) {
ModelAndView mv = new ModelAndView();
mv.addObject("error", e.toString());
mv.setViewName("error");
return mv;
}

三、@ControllerAdvice+@ExceptionHandler注解处理异常

  需要创建一个能够处理异常的全局异常类。在该类上需要添加@ControllerAdvice注解。

 @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("error");
return mv;
}
}

四、配置SimpleMappingExceptionResolver处理异常

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

 @Configuration
public class GlobalException {
public SimpleMappingExceptionResolver getSimpleMappingExceptionResolver() {
SimpleMappingExceptionResolver resolver = new SimpleMappingExceptionResolver();
Properties properties = new Properties();
properties.put("java.lang.ArithmeticException", "error");
resolver.setExceptionMappings(properties);
return resolver;
}
}

五、自定义HandlerExceptionResolver类处理异常

  需要在全局异常类中实现HandlerExceptionResolver接口

 @Configuration
public class GlobalException implements HandlerExceptionResolver {
@Override
public ModelAndView resolverException(HttpServletRequest request, HttpServletResponse response, Object object, Exception exception) {
ModelAndView mv = new ModelAndView();
if(exception instanceof ArithmeticException) {
mv.setViewName("error");
}
mv.addObject("error", exception.toString());
return mv;
}
}

SpringBoot中的异常处理方式的更多相关文章

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

    1.自定义错误页面 SpringBoot 默认的处理异常机制:SpringBoot默认的已经提供了一套处理异常的机制.一旦程序中出现了异常,SpringBoot会向/error的url发送请求.在Sp ...

  2. SpringBoot: 15.异常处理方式5(通过实现HandlerExceptionResolver类)(转)

    修改异常处理方式4中的全局异常处理controller package com.bjsxt.exception; import org.springframework.context.annotati ...

  3. springboot 常用的异常处理方式

    springboot常用的异常处理推荐: 一.创建一个异常控制器,并实现ErrorController接口: package com.example.demo.controller; import o ...

  4. SpringBoot: 11.异常处理方式1(自定义异常页面)(转)

    SpringBoot 默认的处理异常的机制:SpringBoot 默认的已经提供了一套处理异常的机制.一旦程序中出现了异常 SpringBoot 会向/error 的 url 发送请求.在 sprin ...

  5. SpringBoot: 14.异常处理方式4(使用SimpleMappingExceptionResolver处理异常)(转)

    修改异常处理方法3中的全局异常处理Controller即可 package bjsxt.exception; import org.springframework.context.annotation ...

  6. SpringBoot: 13.异常处理方式3(使用@ControllerAdvice+@ExceptionHandle注解)(转)

    问题:使用@ExceptionHandle注解需要在每一个controller代码里面都添加异常处理,会咋成代码冗余 解决方法:新建一个全局异常处理类,添加@ControllerAdvice注解即可 ...

  7. SpringBoot: 12.异常处理方式2(使用@ExceptionHandle注解)(转)

    1.编写controller package com.bjsxt.controller; import org.springframework.stereotype.Controller; impor ...

  8. T-SQL编程中的异常处理-异常捕获(catch)与抛出异常(throw)

    本文出处: http://www.cnblogs.com/wy123/p/6743515.html T-SQL编程与应用程序一样,都有异常处理机制,比如异常的捕获与异常的抛出,本文简单介绍异常捕获与异 ...

  9. springboot中配置过滤器以及可能出现的问题

    在springboot添加过滤器有两种方式: 1.通过创建FilterRegistrationBean的方式(建议使用此种方式,统一管理,且通过注解的方式若不是本地调试,如果在filter中需要增加c ...

随机推荐

  1. dubbo spring 的使用

    1:项目的架构,本项目使用的maven,分为三个模块. api 为接口 , server 为服务端   consumer 为调用端 2:api的模块结构 该模块主要是定义接口和实体.没什么具体介绍的. ...

  2. Linux命令——ldd和ldconfig

    转自:Linux系统中“动态库”和“静态库”那点事儿 前言 在调试lua脚本的时候,报错. 我已经再lua脚本中更改了cpath package.cpath = package.cpath .. &q ...

  3. HTTP协议通信原理 与常见报错信息

    HTTP协议通信原理 请求报文 请求行 GET index.html HTTP 1.1 请求方法:get  读取服务器数据内容    post   提交存储服务端数据(用户注册) 协议版本:   ht ...

  4. JS与小程序页面生命周期

    Page({ /** * 页面的初始数据 */ data: { }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { }, /** * 生命周 ...

  5. SATB的标记问题解决之道与G1垃圾收集模式系统详解及最佳实践

    继续接着上一次https://www.cnblogs.com/webor2006/p/11148282.html的理论学习,上一次学习到了这: 接着继续: SATB详解: 对于三色算法在concurr ...

  6. Jmeter - 生成Html报告

    同步更新至个人博客:https://njlife.top/2019/07/12/Jmeter-%E7%94%9F%E6%88%90Html%E6%8A%A5%E5%91%8A/ Jmeter GUI提 ...

  7. maya 在 pymel 中运行 mel

    maya 在 pymel 中运行 mel 前言 maya mel 自身定义了很多有用的方法,当我们用 pymel 开发的时候,不想重新写一遍 mel 已经有的功能,那么就可以在 pymel 中运行 m ...

  8. unittest单元测试笔记

    单元测试 unittest单元测试是基于java的JUnit思想框架开发出来的测试框架 import unittest import HTMLTestRunner class Mytest1(unit ...

  9. 9 loader - 分析webpack调用第三方loader的过程

    注意:webpack处理第三方文件类型的过程: 1.发现这个要处理的文件不是JS文件,然后就去配置文件中,查找有没有对应的第三方loader规则 2.如果能找到对应的规则,就会调用对应的loader处 ...

  10. WinForm DevExpress使用之ChartControl控件绘制图表一——基础

    最近因为公司项目需要用到WinForm的DecExpress控件,在这里把一些使用方法总结一下. DevExpress中有一个专门用来绘制图表的插件ChartControl,可以绘制折线图.饼状图.柱 ...