当前位置:网站首页>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字符串,并记录日志:
边栏推荐
- 10 权限介绍
- LeetCode Daily Question 2022/7/25-2022/7/31
- User interaction + formatted output
- cudaMemcpy study notes
- f.grid_sample
- 16. Registration Center-consul
- ShardingJDBC基本介绍
- Static route analysis (the longest mask matching principle + active and standby routes)
- Modbus on AT32 MCU
- 关于 mysql8.0数据库中主键位id,使用replace插入id为0时,实际id插入后自增导致数据重复插入 的解决方法
猜你喜欢

Shell script to loop through values in log file to sum and calculate average, max and min

Classic linked list OJ strong training problem - fast and slow double pointer efficient solution

Basic introduction to ShardingJDBC

10、Redis实现点赞(Set)和获取总点赞数

StringJoiner详解

Static routing + PAT + static NAT (explanation + experiment)

STM32CUBEMX开发GD32F303(11)----ADC在DMA模式下扫描多个通道

The effective square of the test (one question of the day 7/29)

Static route analysis (the longest mask matching principle + active and standby routes)

FPGA-based vending machine
随机推荐
[1153] The boundary range of between in mysql
CorelDRAW2022精简亚太新增功能详细介绍
CMOS和TTL的区别?
LeetCode 每日一题 2022/7/25-2022/7/31
汉源高科8路HDMI综合多业务高清视频光端机8路HDMI视频+8路双向音频+8路485数据+8路E1+32路电话+4路千兆物理隔离网络
AI中的数学思想
JS 函数 this上下文 运行时点语法 圆括号 数组 IIFE 定时器 延时器 self.备份上下文 call apply
修改未正确放入沙盒造成苹果兼容性问题
7、私信列表
真正的CTO,是一个懂产品的技术人
MPPT太阳能充放电控制器数据采集-通过网关采集电池电压容量电量SOC,wifi传输
Drools WorkBench的简介与使用
字体压缩神器font-spider的使用
Go 项目实战-获取多级分类下的全部商品
Unity界面总体介绍
多线程下类对象的服务承诺探讨
Drools basic introduction, introductory case, basic syntax
图像处理技术的心酸史
Mathematics to solve the problem - circular linked list
[1154]如何将字符串转换为datetime