当前位置:网站首页>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字符串,并记录日志:
边栏推荐
- Mathematics to solve the problem - circular linked list
- coldfusion8 background scheduled tasks take shell
- 多线程下类对象的服务承诺探讨
- ShardingJDBC usage summary
- Layer 2 broadcast storm (cause + judgment + solution)
- BAT卖不动「医疗云」:医院逃离、山头林立、行有行规
- Brute Force/Adjacency Matrix Breadth First Directed Weighted Graph Undirected Weighted Graph
- 真正的CTO,是一个懂产品的技术人
- mysql index
- 自动化办公案例:如何自动生成期数据?
猜你喜欢

Discourse 自定义头部链接(Custom Header Links)

16. Registration Center-consul

Installation, start and stop of redis7 under Linux

10 权限介绍

CorelDRAW2022精简亚太新增功能详细介绍

Unity界面总体介绍

关于 mysql8.0数据库中主键位id,使用replace插入id为0时,实际id插入后自增导致数据重复插入 的解决方法
![LeetCode 1161 The largest element in the layer and the LeetCode road of [BFS binary tree] HERODING](/img/56/fcc8ee6f592abf0a374fc950a3362f.png)
LeetCode 1161 The largest element in the layer and the LeetCode road of [BFS binary tree] HERODING

multiplayer-hlap 包有问题,无法升级的解决方案

ShardingJDBC使用总结
随机推荐
Maximum area of solar panel od js
ShardingJDBC使用总结
Drools basic introduction, introductory case, basic syntax
CentOS7下mysql5.7.37的安装【完美方案】
General introduction to the Unity interface
To write good test cases, you must first learn test design
12 磁盘相关命令
Introduction to flask series 】 【 flask - using SQLAlchemy
11、Redis实现关注、取消关注以及关注和粉丝列表
Word/Excel fixed table size, when filling in the content, the table does not change with the cell content
修改未正确放入沙盒造成苹果兼容性问题
Drools基本介绍,入门案例,基本语法
ShardingJDBC基本介绍
LeetCode 1161 The largest element in the layer and the LeetCode road of [BFS binary tree] HERODING
7、私信列表
全流程调度——MySQL与Sqoop
coldfusion8 background scheduled tasks take shell
汉源高科8路HDMI综合多业务高清视频光端机8路HDMI视频+8路双向音频+8路485数据+8路E1+32路电话+4路千兆物理隔离网络
How to design the changing system requirements
Observer mode (1)