使用

  1. 处理异常的类使用@ControllerAdvic注解
  2. 根据不同的异常有不同的处理逻辑,用什么区分不同的异常呢?使用@ExceptionHandler注解,value值是异常,当发生该异常时,会进入到该方法。处理异常的逻辑在此方法中。
  3. 异常匹配是最近匹配,如果有一样的异常,走同异常的逻辑方法,以本例为例,如果发生的是MineException,有MineException处理逻辑就会进入该处理方法,没有则会进入到Exception的处理方法中。
package cn.timebusker.web;import javax.servlet.http.HttpServletRequest;import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;import cn.timebusker.exception.ErrorMassage;
import cn.timebusker.exception.MineException;/*** 创建全局异常处理类:通过使用@ControllerAdvice定义统一的异常处理类,而不是在每个Controller中逐个定义。** @ControllerAdvice统一定义不同Exception映射到不同错误处理页面*/
@ControllerAdvice
public class GlobalExceptionController {/*** 在@ControllerAdvice类中,根据抛出的具体Exception类型匹配@ExceptionHandler中配置的异常类型来匹配错误映射和处理*/public static final String DEFAULT_ERROR_VIEW = "error";/*** 捕获自定义异常,返回json信息*/@ExceptionHandler(value = MineException.class)@ResponseBodypublic ErrorMassage<Object> ErrorHandler(HttpServletRequest req, MineException e) throws Exception {ErrorMassage<Object> error = new ErrorMassage<>();error.setCode(404);error.setMessage("Not Found Exception......");error.setUrl(req.getRequestURL().toString());error.setData("");return error;}@ExceptionHandler(value = ArithmeticException.class)@ResponseBodypublic ErrorMassage<Object> ErrorHandler(HttpServletRequest req, ArithmeticException e) throws Exception {ErrorMassage<Object> error = new ErrorMassage<>();error.setCode(405);error.setMessage("java.lang.ArithmeticException: / by zero");error.setUrl(req.getRequestURL().toString());error.setData(e);return error;}/*** @ExceptionHandler用来定义函数针对的异常类型,最后将Exception对象和请求URL映射到error.html中*/@ExceptionHandler(value = Exception.class)public ModelAndView ErrorHandler(HttpServletRequest req, Exception e) throws Exception {ModelAndView mav = new ModelAndView();ErrorMassage<Exception> error = new ErrorMassage<Exception>();error.setCode(400);error.setMessage("系统异常");error.setUrl(req.getRequestURI());error.setData(e);mav.addObject(error);mav.setViewName(DEFAULT_ERROR_VIEW);return mav;}
}

springboot的异常处理相关推荐

  1. SpringBoot自适应异常处理

    效果演示 我们先来看一下Springboot的默认效果 浏览器访问 客户端访问 划重点!!! 但是绝大部分公司的代码,都是没做自适应处理的,很大一部分原因在于,你在网上搜索Springboot全局异常 ...

  2. springboot统一异常处理类及注解参数为数组的写法

    springboot统一异常处理类及注解参数为数组的写法 参考文章: (1)springboot统一异常处理类及注解参数为数组的写法 (2)https://www.cnblogs.com/zhucww ...

  3. springboot自定义异常处理

    springboot自定义异常处理 参考文章: (1)springboot自定义异常处理 (2)https://www.cnblogs.com/SimpleWu/p/10044468.html 备忘一 ...

  4. springboot全局异常处理_SpringBoot:如何优雅地处理全局异常

    之前用springboot的时候,只知道捕获异常使用try{}catch,一个接口一个try{}catch,这也是大多数开发人员异常处理的常用方式,虽然屡试不爽,但会造成一个问题,就是一个Contro ...

  5. springboot统一异常处理及返回数据的处理

    springboot统一异常处理及返回数据的处理 参考文章: (1)springboot统一异常处理及返回数据的处理 (2)https://www.cnblogs.com/renshengruozhi ...

  6. springboot 全局异常处理类

    目录标题 springboot 全局异常处理类 依赖 代码 springboot 全局异常处理类 依赖 <!-- Spring Boot Web 依赖 核心 --><dependen ...

  7. [SpringBoot]全局异常处理

    2019独角兽企业重金招聘Python工程师标准>>> 1. 全局异常处理 2. SpringBoot错误处理原理 3. SpringBoot定制错误页面 4. SpringBoot ...

  8. springboot 默认异常处理

    SpringBoot默认有自定义异常处理的体系,在做SpringBoot项目的时候,如果是抛出了运行时异常,springBoot并会对异常进行处理,返回如下异常信息: {"timestamp ...

  9. SpringBoot 全局异常处理

    下面首先来观察一个程序代码,例如:现在建立一个控制器,而后这个控制器自己抛出一个异常.@Controller public class MemberController extends Abstrac ...

  10. SpringBoot全局异常处理

    1.为什么要全局异常处理 在实际开发中,如果不处理统一处理异常,那么前端在调用后端提供的接口,就会处理各种的异常结构,对于前端来说那可谓是一场灾难,这对前后端的协作也不友好.比如后端路径:/api/v ...

最新文章

  1. 协程,又称微线程和纤程
  2. 【学术相关】魔术乘法:张成奇教授40年磨一剑!
  3. des算法明文IP置换C语言编程,求助攻:C语言DES算法的实现程序有问题
  4. ES5-拓展 箭头函数的this、this的优先级
  5. linux中initrd的含义,Linux2.6 内核的 Initrd 机制解析
  6. 【Python学习】 - sklearn学习 - 评估指标precision_score的参数说明
  7. 除了吃月饼,中秋节还能干啥?
  8. 记一些Python(Pymysql)建表、增删改查等基础操作(小白适用)
  9. 华为云发布国内首个 AI 模型市场,加速企业 AI 应用落地
  10. LuoguP2764 最小路径覆盖问题(最大流)
  11. 学习双拼必看:双拼输入法的心得以及快速入门办法
  12. php 带参页面跳转页面,跳转页面带参数_如何带参数跳转php界面
  13. python卡方检验计算pvalue值_Python数据科学:卡方检验
  14. 图片不变形,按照等比例缩小或扩大显示
  15. android 刷机失败原因,安卓5.0刷机失败怎么办?
  16. 2021年的谷歌排名优化怎么做,69个重点告诉你
  17. liferay Dynamic Query 查询
  18. deepin20系统选择手动安装盘_拯救老Macbook Air笔记本经验分享,用优盘安装最新苹果系统...
  19. Leetcode-元素和小于等于阈值的正方形的最大边长(python)
  20. SEO分类:白帽SEO-黑帽SEO-灰帽SEO

热门文章

  1. 计算机教学研修心得英语,英语研修心得体会
  2. servlet mysql 小程序_Servlet页面注册用户的小程序(一)
  3. 翻译:自动驾驶相关术语的分类和定义Taxonomy and Definitions for Terms Related to On-Road Motor Vehicle Automated
  4. DeepRacer 找到的最好的奖励函数 reward function
  5. CocoaPods 简易教程 Alamofire请求数据 Swift
  6. mysql读写分离中间件都有哪些_MySQL读写分离中间件Atlas
  7. 基于 Spark推荐 系统应用 现 状
  8. 402.移掉K位数字
  9. 153.寻找旋转排序数组中的最小值
  10. octave存储文档