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>  
           <!--映射对应的异常,捕获到就跳转/WEB-INF/templates/error.html-->  
           <prop key="java.lang.ArithmeticException">error</prop>  
       </props>  
    </property>  
    <!--异常信息映射请求域-->  
    <property name="exceptionAttribute" value="ex"/>  
</bean>

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

@RequestMapping("/test")  
public String test() {  
    int i = 1 / 0;  
    return "hello world";  
}  
  

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

修改代码输出报错:

<span>Page not found</span><span>404</span><span th:text="${ex}"></span>

效果如下:

注解处理异常


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

1. 新建异常处理类


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

2. 添加 @ControllerAdvice注解

@ControllerAdvice  
public class testExceptionHandler {  
}

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

@ExceptionHandler(value = ArithmeticException.class)  
public String arithmeticException() {  
}

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

4. 设置跳转地址

@ControllerAdvice  
public class testExceptionHandler {  
    @ExceptionHandler(value = ArithmeticException.class)  
    public String arithmeticException() {  
        return "error";  
    }  
}

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

@ControllerAdvice  
public class testExceptionHandler {  
    @ExceptionHandler(value = ArithmeticException.class)  
    public String arithmeticException(Exception ex,Model model) {  
        model.addAttribute("ex",ex);  
        return "error";  
    }  
}

相关推荐

  1. SpringMVC异常处理

    2024-04-27 02:04:01       65 阅读
  2. SpringMVC异常处理

    2024-04-27 02:04:01       39 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-27 02:04:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-27 02:04:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-27 02:04:01       82 阅读
  4. Python语言-面向对象

    2024-04-27 02:04:01       91 阅读

热门阅读

  1. EureKa详解

    2024-04-27 02:04:01       32 阅读
  2. 基础数据类型和引用数据类型(指针)的区别

    2024-04-27 02:04:01       35 阅读
  3. 精选GenAI和LLM学习资源

    2024-04-27 02:04:01       36 阅读
  4. 【读书分享】 感悟设计-电子设计的经验与哲理

    2024-04-27 02:04:01       36 阅读
  5. mmsegmentatio

    2024-04-27 02:04:01       29 阅读
  6. 对策略模式的理解

    2024-04-27 02:04:01       28 阅读
  7. 一篇文章学会 MySQL UNION

    2024-04-27 02:04:01       30 阅读
  8. 四、搭建 FFmpeg,实战直播推流

    2024-04-27 02:04:01       32 阅读
  9. 七、四个步骤实现FFmpeg推流播放实战

    2024-04-27 02:04:01       25 阅读
  10. scss基础和css扩展

    2024-04-27 02:04:01       35 阅读