• SpringMVC笔记——配置异常处理


    什么是SpringMVC的异常处理


    Spring MVC提供了一种灵活的方式来处理Web应用程序中的异常。有多种方式可以处理异常,包括标准的Spring异常处理器和特殊的@ExceptionHandler方法。

    以下是Spring MVC处理异常的几种方式:

    1. 使用Spring @ControllerAdvice注解:通过使用@ControllerAdvice,我们可以将所有的异常处理程序集中在一个地方。只需要在类上加上@ControllerAdvice注解,然后在类中添加一个或多个由@ExceptionHandler注解标记的方法。
    • 然后使用Spring @ExceptionHandler注解:@ExceptionHandler注解提供了一种处理特定异常的方式。当控制器抛出此类异常时,这个方法就会被调用。
    1. 实现HandlerExceptionResolver接口:你可以创建一个实现了HandlerExceptionResolver接口的类来全局处理异常。这允许你在没有使用@ControllerAdvice或@ExceptionHandler时进行全局异常管理。

    2. 使用SimpleMappingExceptionResolver:这是一个实现了HandlerExceptionResolver接口的类,它允许你将特定的异常映射到视图名。

    这些机制让开发者能够更好地管理和控制发生在应用程序中的错误和异常,提高用户体验,并允许对错误进行更好地记录和分析。

    xml映射处理异常


    spring的配置文件中加入以下代码:

      
    <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">  
          
        <property name="exceptionMappings">  
           <props>  
                 
               <prop key="java.lang.ArithmeticException">errorprop>  
           props>  
        property>  
          
        <property name="exceptionAttribute" value="ex"/>  
    bean>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    controller 添加测试类,添加error页面:

    @RequestMapping("/test")  
    public String test() {  
        int i = 1 / 0;  
        return "hello world";  
    }  
      
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    这边使用的是一个大佬的404页面,原地址:https://github.com/yansheng836/404pages/blob/master/WebRoot/2js-animate/2_1_on-the-sea/sea-404page.html

    修改代码输出报错:

    <span>Page not foundspan><span>404span><span th:text="${ex}">span>
    
    • 1

    效果如下:

    注解处理异常


    tip:记得注释刚刚的代码,不然会冲突

    1. 新建异常处理类


    记得让组件能够扫描到这个包

    2. 添加 @ControllerAdvice注解

    @ControllerAdvice  
    public class testExceptionHandler {  
    }
    
    • 1
    • 2
    • 3

    3. 异常处理方法上添加 @ExceptionHandler,value设置为需要处理的异常

    @ExceptionHandler(value = ArithmeticException.class)  
    public String arithmeticException() {  
    }
    
    • 1
    • 2
    • 3

    value 的值可以设置多个
    value = {ex1.class, ex2.class, ex3.class}

    4. 设置跳转地址

    @ControllerAdvice  
    public class testExceptionHandler {  
        @ExceptionHandler(value = ArithmeticException.class)  
        public String arithmeticException() {  
            return "error";  
        }  
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    5. Model参数获取异常请求域

    @ControllerAdvice  
    public class testExceptionHandler {  
        @ExceptionHandler(value = ArithmeticException.class)  
        public String arithmeticException(Exception ex,Model model) {  
            model.addAttribute("ex",ex);  
            return "error";  
        }  
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

  • 相关阅读:
    2.jQuery对象
    实验篇(7.2) 10. 扩充物理实验环境 ❀ 远程访问
    python处理CSV文件
    31-jwt认证
    (五)socket·socket 实现 服务端广播 -不限制次序,不限制交互次数
    从本地到全球:跨境电商的壮丽崛起
    Dell R720\R720xd\R730\R730xd等iDRAC风扇调速
    Java如何使用实时流式计算处理?
    十大排序算法(冒泡排序、插入排序、选择排序、希尔排序、堆排序、快排、归并排序、桶排序、计数排序、基数排序)
    【洛谷算法题】P1421-小玉买文具【入门1顺序结构】
  • 原文地址:https://blog.csdn.net/qq_66250368/article/details/137988299