SpringBoot配置GlobalExceptionHandler全局异常处理器案例
作者:strive_day 发布时间:2023-06-11 12:14:36
标签:SpringBoot,GlobalExceptionHandler,全局异常
1. 创建全局异常处理器类GlobalExceptionHandler
@ControllerAdvice: 定义统一的异常处理类,捕获 Controller 层抛出的异常。如果添加 @ResponseBody 返回信息则为JSON格式,这样就不必在每个Controller中逐个定义AOP去拦截处理异常。
@RestControllerAdvice: 相当于 @ControllerAdvice 与 @ResponseBody 的结合体。
@ExceptionHandler: 统一处理一种类的异常,减少代码重复率,降低复杂度。
@ControllerAdvice
public class GlobalExceptionHandler {
//@ExceptionHandler 该注解声明异常处理方法, ModelAndView mv
@ExceptionHandler(value = Exception.class)
public ModelAndView myHandler(Exception e, HttpServletRequest request, HttpServletResponse response) {
System.out.println("GlobalExceptionHandler全局异常处理器捕获");
ModelAndView mv = new ModelAndView();
mv.addObject("message", e.getMessage()); //异常错误信息提示
mv.addObject("url", request.getRequestURI()); //异常请求的url地址
mv.addObject("status", response.getStatus()); //获取状态码
mv.setViewName("/pages/exception/error"); //异常的视图名称
return mv;
}
}
【注意】基于@ControllerAdvice注解的全局异常统一处理只能针对于Controller层的异常。也就是只能捕获到Controller层的异常,在service层或者其他层面的异常都不能捕获。
2. 创建controller测试出现异常情况
//测试异常处理
@GetMapping(path = "/exception")
public String toException() {
System.out.println("toException");
//throw new Exception();
int i =1/0;
System.out.println("toException end");
return "/pages/company/company_list";
}
编写html页面显示错误信息
<!-- 统一异常处理页面 -->
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org" >
<head>
<title>出现错误啦</title>
</head>
<body>
<div class="content-container">
<div class="head-line">
<img src="../img/error.jpg" alt="" width="120"/>
</div>
<div class="subheader">
<span name="message" th:text="${status}"/>,页面走丢啦<br/>
<p style="font-size: 16px">
原因:<font color="red" size="20px"><span name="message" th:text="${message}"/></font><br/>
地址:<a th:href="${url}" rel="external nofollow" ><span name="url" th:text="${url}"/></a><br/>
</p>
</div>
<div class="hr"></div>
<div class="context">
<p>您可以返回上一页重试,或直接向我们反馈错误报告
<br/>
联系地址:<a href="https://striveday.blog.csdn.net/" rel="external nofollow" >String_day</a><br/>
联系电话:<span>18828886888</span>
</p>
</div>
</body>
</html>
访问错误查看跳转页面
http://localhost:8000/OnlineMall/page/exception
来源:https://blog.csdn.net/qq_40542534/article/details/110691409
0
投稿
猜你喜欢
- 背景大家在使用Selenium + Chromedriver爬取网站信息的时候,以为这样就能做到不被网站的反爬虫机制发现。但是实际上很多参数
- 近期,Apache SkyWalking 修复了一个隐藏了近4年的Bug - TTL timer 可能失效问题,这个 bug 在 SkyWa
- 最近在开发项目的时候遇到一个问题,在myecilpes上使用googlede gson读取项目中的json文件成功,然后把项目发布到tomc
- 问题:Information:java: Errors occurred while compiling module &lsquo
- Spring boot项目结合docker容器用,打了个jar包,启动的时候竟然说:no main manifest attribute,
- 程序如下:View Code /* * Hanoi塔游戏 问题描述: * 汉诺塔:汉诺塔(又称河内塔)问
- 今天来了一个问题:软键盘无法弹出。分析后是因为系统判断当前有外接硬键盘,就会隐藏软键盘。但实际情况并不是这么简单,该问题只有在特定条件下偶现
- * 的实现使用的模式:代理模式。代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。类似租房的中介。两种 * :(1)jd
- 定义:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。类型:行为类
- 详解 Corba开发之Java实现Service与Client1 概述
- 以下摘自胖哥分享的 2022开工福利教程。在学习Spring Security的时候你有没有下面这两个疑问:Spring Security的
- 一、注解(annotations)列表@SpringBootApplication:包含了@ComponentScan、@Configura
- 1.editplus1.1 官方下载https://www.editplus.com/官方下载最新的64位2 .解压就可以使用2.1 vsc
- Maven中建立的依赖管理方式基本已成为Java语言依赖管理的事实标准,Maven的替代者Gradle也基本沿用了Maven的依赖管理机制。
- 假定你已经了解了运行时的数据区域和常用的垃圾回收算法,也了解了Hotspot支持的垃圾回收器。一、cpu占用过高cpu占用过高要分情况讨论,
- 项目介绍基于Layui的后台管理系统模板,扩展Layui原生UI样式,整合第三方开源组件,提供便捷快速的开发方式,延续LayuiAdmin的
- 初步探索首先我们要了解equals方法是什么,hashcode方法是什么。equals方法equals 是java的obejct类的一个方法
- 引言一个复杂的分布式系统,用户发起一个请求,这个请求可能调用几十到几百个服务,经过很多业务层,而每个业务又是多个机器集群,一个请求具体被随机
- Strut2判断是否是AJAX调用1. AJAX与传统Form表单实际上,两者一般都是通过HTTP的POST请求。区
- forward_list 概述forward_list 是 C++ 11 新增的容器,它的实现为单链表。forward_list 是支持从容