当前位置:网站首页>8. Unified exception handling (controller notifies @ControllerAdvice global configuration class, @ExceptionHandler handles exceptions uniformly)
8. Unified exception handling (controller notifies @ControllerAdvice global configuration class, @ExceptionHandler handles exceptions uniformly)
2022-07-31 02:39:00 【一个偷笑】
- SpringBoot设计,如果出现错误404或500,Automatically call under a specific pathhtml页面(Paths and names are specific)./templates/error/404.html、/templates/error/500.html.This page is automatically called when there is an error in the program.
- But the error has async request error,Also want to log at the same time.Then use the unified processing method,即全局配置.使用HomeController,Add a request to get the error page,手动重定向路径.
@RequestMapping(path = "/error", method = RequestMethod.GET)
public String getErrorPage() {
return "/error/500";
}
在Controller下新建adviceNotification configuration package,新建ExceptionAdvice.用到两个注解:@ControllerAdvice,@ExceptionHandler.
- 是Controller全局配置类,Not to anyControllerdo the configuration again,can be done uniformlyController的全局配置.@ControllerAdvice用来修饰类.
- 异常处理方案**@ExceptionHandler**、绑定数据方案**@ModelAttribute**、绑定参数方案**@DataBinder**. They are both used to decorate methods.
- 这里只演示,统一处理异常(@ExceptionHandler)
// 是Controller全局配置类,Not to anyControllerdo the configuration again,can be done uniformlyController的全局配置[email protected]用来修饰类.
// 异常处理方案@ExceptionHandler、绑定数据方案@ModelAttribute、绑定参数方案@DataBinder. They are both used to decorate methods.
// 这里只演示,统一处理异常(@ExceptionHandler)
@ControllerAdvice(annotations = Controller.class) // 限定注解@Controller,Otherwise the component scans allbean
public class ExceptionAdvice {
private static final Logger logger = LoggerFactory.getLogger(ExceptionAdvice.class);
@ExceptionHandler({
Exception.class})// 处理哪些异常?Exception是所有异常的父类,All exceptions are handled
// 有异常controllerwill passException
public void handleException(Exception e, HttpServletRequest request, HttpServletResponse response) throws IOException {
// 记录日志
logger.error("服务器发生异常:" + e.getMessage());//Unusual summary
for (StackTraceElement element : e.getStackTrace()) {
//Record the information of all stacks of exceptions
logger.error(element.toString());
}
// 给浏览器响应
// Depends what the request is,Want the server to return the web pagehtml/异步请求JSON(xml).Get it from the request header.
String xRequestedWith = request.getHeader("x-requested-with");
if ("XMLHttpRequest".equals(xRequestedWith)) {
// 异步请求
response.setContentType("application/plain;charset=utf-8");
PrintWriter writer = response.getWriter();// 输出流
writer.write(CommunityUtil.getJSONString(1,"服务器异常!"));// 输出JSON字符串
}else{
// 请求html,重定向到错误页面
response.sendRedirect(request.getContextPath() + "/error");
}
}
}
Click on the Unconfigured page to appear404,并记录日志:
点击消息,浏览器请求页面,服务端出错500,并记录日志:
发送私信,异步请求,服务端出错,返回JSON字符串,并记录日志:
边栏推荐
- 经典链表OJ强训题——快慢双指针高效解法
- LeetCode 1161 The largest element in the layer and the LeetCode road of [BFS binary tree] HERODING
- Go 项目实战-获取多级分类下的全部商品
- How to design the changing system requirements
- The modification is not properly placed in the sandbox, causing Apple compatibility issues
- CentOS7下mysql5.7.37的卸载【完美方案】
- 二层广播风暴(产生原因+判断+解决)
- STM32CUBEMX开发GD32F303(11)----ADC在DMA模式下扫描多个通道
- User interaction + formatted output
- 全流程调度——MySQL与Sqoop
猜你喜欢
4、敏感词过滤(前缀树)
汉源高科8路HDMI综合多业务高清视频光端机8路HDMI视频+8路双向音频+8路485数据+8路E1+32路电话+4路千兆物理隔离网络
10 权限介绍
Static routing + PAT + static NAT (explanation + experiment)
7、私信列表
Drools基本介绍,入门案例,基本语法
关于 mysql8.0数据库中主键位id,使用replace插入id为0时,实际id插入后自增导致数据重复插入 的解决方法
【Bank Series Phase 1】People's Bank of China
Word/Excel fixed table size, when filling in the content, the table does not change with the cell content
Intel's software and hardware optimization empowers Neusoft to accelerate the arrival of the era of smart medical care
随机推荐
golang GUI for nuxui — HelloWorld
4、敏感词过滤(前缀树)
ShardingJDBC使用总结
Face detection based on opencv
php 网站的多语言设置(IP地址区分国内国外)
Verify the integer input
项目开发软件目录结构规范
[1154]如何将字符串转换为datetime
LeetCode Daily Question 2022/7/25-2022/7/31
CentOS7下mysql5.7.37的卸载【完美方案】
The difference between link and @import
print task sorting js od huawei
Drools basic introduction, introductory case, basic syntax
Classic linked list OJ strong training problem - fast and slow double pointer efficient solution
完整复制虚拟机原理(云计算)
Brute Force/Adjacency Matrix Breadth First Directed Weighted Graph Undirected Weighted Graph
19.支持向量机-优化目标和大间距直观理解
AI中的数学思想
[1153] The boundary range of between in mysql
Drools Rule Properties, Advanced Syntax