SpringBoot中的异常处理方式
2024-08-29 20:15:36
SpringBoot中有五种处理异常的方式:
一、自定义错误页面
SpringBoot默认的处理异常机制:SpringBoot默认的已经提供了一套处理异常的机制。一旦程序出现了异常SpringBoot就像/error的url发送请求。在springboot中提供了一个叫BasicExceptionController来处理/error请求,然后跳转到默认显示异常的页面来展示异常信息。
如果我们需要将所有的异常统一跳转到自定义的错误页面,需要在src/main/resources/templates目录下创建error.html页面。并添加这个标签。
<span th:text="${exception}"></span>
二、@ExceptionHandle注解处理异常
只需要在controller中添加这样的方法:
@ExceptionHandler(value={java.lang.ArithmeticException.class})
public ModelAndView arithmeticExceptionHandler(Exception e) {
ModelAndView mv = new ModelAndView();
mv.addObject("error", e.toString());
mv.setViewName("error");
return mv;
}
三、@ControllerAdvice+@ExceptionHandler注解处理异常
需要创建一个能够处理异常的全局异常类。在该类上需要添加@ControllerAdvice注解。
@ControllerAdvice
public class GlobalException {
@ExceptionHandler(value={java.lang.ArithmeticException.class})
public ModelAndView arithmeticExceptionHandler(Exception e) {
ModelAndView mv = new ModelAndView();
mv.addObject("error", e.toString());
mv.setViewName("error");
return mv;
}
}
四、配置SimpleMappingExceptionResolver处理异常
在全局异常类中添加一个方法完成异常类的统一处理
@Configuration
public class GlobalException {
public SimpleMappingExceptionResolver getSimpleMappingExceptionResolver() {
SimpleMappingExceptionResolver resolver = new SimpleMappingExceptionResolver();
Properties properties = new Properties();
properties.put("java.lang.ArithmeticException", "error");
resolver.setExceptionMappings(properties);
return resolver;
}
}
五、自定义HandlerExceptionResolver类处理异常
需要在全局异常类中实现HandlerExceptionResolver接口
@Configuration
public class GlobalException implements HandlerExceptionResolver {
@Override
public ModelAndView resolverException(HttpServletRequest request, HttpServletResponse response, Object object, Exception exception) {
ModelAndView mv = new ModelAndView();
if(exception instanceof ArithmeticException) {
mv.setViewName("error");
}
mv.addObject("error", exception.toString());
return mv;
}
}
最新文章
- Spring定时任务的几种实现
- 让webapi只接受ajax请求
- mount: unknown filesystem type &#39;LVM2_member&#39;解决方案
- Qt:无标题栏无边框程序的拖动和改变大小
- mac下的改装人生——制作mac os 启动盘
- 第八届河南省赛F.Distribution(水题)
- cmd命令行查看当前系统版本和版本是32位还是64位
- Flex回声消除的最佳方法
- A+B for Input-Output Practice (VI)
- Server版Linux命令提示符揭秘
- 内置窗口 pyqt5
- visual studio 2017 installer 安装包的安装必备组件设置
- kali 创建用户
- input text文本框内部最后面放一个按钮
- ASP.NET Core使用Elasticsearch记录NLog日志
- 使用cancelBubble竟然可以阻止所有浏览器的冒泡?
- Composer 添加 Laravel-china 的国内源
- 基于spring boot admin 做监控的一些问题记录
- @pathVariable的作用(二十二)
- [leetcode] 204. Count Primes 统计小于非负整数n的素数的个数
热门文章
- Linux之redis的安装,主从配置
- 【异常】Maxwell异常 Exception in thread ";main"; net.sf.jsqlparser.parser.TokenMgrError: Lexical error at line 1, column 596. Encountered: <;EOF>; after : ";";
- 昨天521表白失败,我想用Python分析一下...表白记录和聊天记录
- java - day019 - 反射
- syzkaller安装
- HTML手写课程表,练基础
- es其他常用功能
- Spring Security 流程
- 02 Spring IOC
- vue 传入一个对象的所有属性