SpringBoot全局异常处理机制和配置拦截器

本文介绍了如何在SpringBoot项目中实现全局异常处理和配置拦截器。通过添加依赖并创建自定义异常处理器,可以将异常信息展示在Thymeleaf页面。SpringBoot的异常处理机制包括默认的静态页面错误显示,以及动态模板下的错误页面。同时,文章还详细阐述了SpringBoot拦截器的注册和使用,展示了拦截器如何在请求前后打印信息。
摘要由CSDN通过智能技术生成

关于SpringBoot的全局异常处理,其实十分简单。首先,要新建一个SpringBoot项目添加两个依赖,spring-boot-starter-web和spring-boot-starter-thymeleaf。

这个时候,我们便可以把异常信息展示在thymeleaf页面。

编写接口:

以往的SpringMVC配置在SpringBoot项目中依然生效。所以可以通过实现HandlerExceptionResolver接口或者添加@ExceptionHandler注解来处理全局异常。

@ControllerAdvice
public class GlobalExceptionHandler implements HandlerExceptionResolver {
    @Override
    public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
        ModelAndView mv = new ModelAndView("01");
        mv.addObject("error",ex.getMessage());
        return mv;
    }
}
@ControllerAdvice
public class GlobalExceptionHandler2 {
    @ExceptionHandler(ArithmeticException.class)
    public ModelAndView resolveException( Exception ex) {
        ModelAndView mv = new ModelAndView("01");
        mv.addObject("error",ex.getMessage());
        return mv;
    }
}

 thymeleaf视图必须放在/resources/templates文件夹下,此时需要新建一个01.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试页面</title>
</head>
<body>
<h4>异常信息显示:&l
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你好!对于Spring Boot全局异常处理没有起作用的问题,可能有几种可能的原因。以下是一些常见的排查步骤: 1. 确保你已经正确地配置全局异常处理器。在Spring Boot中,你可以通过实现`HandlerExceptionResolver`接口或使用`@ControllerAdvice`注解来实现全局异常处理。请确保你的异常处理器被正确地配置,并且能够被Spring Boot识别到。 2. 检查你的异常处理器是否被正确地扫描和注册。在Spring Boot中,通常需要在主应用程序类上添加`@ComponentScan`或`@SpringBootApplication`注解,以确保你的异常处理器被正确地扫描和注册。 3. 确保你的异常处理器能够捕获到发生的异常。在处理请求时,确保你的异常处理器能够捕获到相应的异常。你可以在异常处理器中打印日志或返回自定义的错误响应。 4. 检查是否有其他异常处理机制优先于全局异常处理器生效。在Spring Boot中,可能存在多个异常处理机制,如自定义的`@ExceptionHandler`方法、拦截器、过滤器等。请确保全局异常处理器是最后被调用的,以避免其他异常处理机制优先于它生效。 5. 检查是否有其他异常处理器覆盖了全局异常处理器。在某些情况下,可能存在多个异常处理器的优先级相同或有重叠的情况。请确保全局异常处理器的优先级最高,并且没有被其他异常处理器覆盖。 希望以上的建议能帮助你找到问题所在并解决全局异常处理没有起作用的问题。如果还有其他问题,请随时提问!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值