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


猜你喜欢
- 在工作中要求将图片上传至本地,如下代码将介绍如何将图片上传至本地准备工作:环境:eclipse4.5-x64,jdk1.7-x64,mave
- 前言Spring内置的工具类里,最喜欢用的就是文件读写这一部分,虽然原生的写法也没几句,但是就是懒,不想循环、判断什么的,直接调用现成的静态
- C#中的很多关键词用法比较容易混淆,var和dynamic就是其中一组,他们都可以申明动态类型的变量,但是本质上他们还是有不少区别的。var
- 项目源码:https://gitee.com/tanwubo/jwt-spring-security-demo登录通过自定义的WxApple
- 该注解用于将 Controller 的方法返回的对象,通过 HttpMessageConverter 接口转换为指定格式的数据如:json,
- 前言在使用Mybatis-Plus新增的时候,我们往往想要id随着数据库自增,但是如果不是我们指定id为auto(自增)的话,会通过算法算出
- 一、springboot 自动配置原理先说说我们自己的应用程序中Bean加入容器的办法:package com.ynunicom.dc.di
- 一、Intent的用途Intent主要有以下几种重要用途: 1. 启动Activity:可以将Intent对象传递给startActivit
- 面试题1:Bean 的加载过程是怎样的?我们知道, Spring 的工作流主要包括以下两个环节:解析,读 xml 配置,扫描类文件,从配置或
- Java xml出现错误 javax.xml.transform.TransformerException: java.lang.NullP
- 本文实例讲述了Android编程之OpenGL绘图技巧。分享给大家供大家参考,具体如下:很久不用OpenGL ES绘图,怕自己忘记了,于是重
- 还记得读大学时初识计算机编程时的C语言,Main(){},那时还不明白入口函数是什么意思,只知道照抄书本上的示例,一行一行地跑printf看
- 本文实例讲述了C#获取上个月第一天和最后一天日期的方法。分享给大家供大家参考。具体实现代码如下:int year = DateTime.No
- 一 问题描述小明为位置1,求他到其他各顶点的距离。二 实现package graph.dijkstra;import j
- 完美地模仿了2048游戏,是根据网友的一个2048改的。Block.javaimport javax.swing.*;import java
- C#判断数据类型的简单示例代码:int i = 5; Console
- 统计图形种类繁多, 有柱状图, 折线图, 扇形图等等, 而统计图形的绘制方法也有很多, 有Flash制作的统计图形, 有水晶报表生成统计图形
- Android 中SwipeRefreshLayout与ViewPager滑动事件冲突解决方法问题描述:开发中发现,SwipeRefresh
- 首先是网页部分,upload_file.jsp<%@ page language="java" import=&q
- GSYVideoPlayerGSYVideoPlayer官方地址GSYVideoPlayer 一个基于IJkPlayer的播放器支持调节声音