13、SpringMVC之异常处理器

饭宝  金牌会员 | 2023-12-20 00:42:39 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 924|帖子 924|积分 2772

13.1、环境搭建

创建名为spring_mvc_exception的新module,过程参考9.1节和9.5节
13.1.1、创建错误提示页

  1. <!DOCTYPE html>
  2. <html lang="en" xmlns:th="http://www.thymeleaf.org">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <title>错误页面</title>
  6. </head>
  7. <body>
  8. <h1>errorPage.html</h1>
  9. </body>
  10. </html>
复制代码
13.1.2、创建会发生异常的控制器方法

  1. package online.liaojy.controller;
  2. import org.springframework.stereotype.Controller;
  3. import org.springframework.web.bind.annotation.RequestMapping;
  4. /**
  5. * @author liaojy
  6. * @date 2023/11/13 - 19:48
  7. */
  8. @Controller
  9. public class TestController {
  10.     @RequestMapping("/test/hello")
  11.     public String testHello(){
  12.         // 在控制器方法中,制造一个数值运算异常
  13.         System.out.println(1/0);
  14.         return "success";
  15.     }
  16. }
复制代码
13.2、异常处理器概述


  • SpringMVC 提供了一个处理控制器方法执行异常的接口:HandlerExceptionResolver
  • HandlerExceptionResolver 接口的实现类有:DefaultHandlerExceptionResolver 和 SimpleMappingExceptionResolver
  • 实际工作中,有时使用 SimpleMappingExceptionResolver 异常处理器,来对控制器方法出现的异常进行自定义异常处理
13.3、使用xml配置异常处理器

13.3.1、基本配置示例

  1.    
  2.     <bean >
  3.         
  4.         <property name="exceptionMappings">
  5.             <props>
  6.         
  7.         <property name="exceptionAttribute" value="exceptionMessage"></property>
  8.         
  9.         <property name="exceptionAttribute" value="exceptionMessage"></property><prop key="java.lang.ArithmeticException">errorPage</prop>
  10.             </props>
  11.         </property>
  12.     </bean>
复制代码
13.3.2、基本示例测试效果



13.3.3、进阶配置示例

  1.         
  2.         <property name="exceptionAttribute" value="exceptionMessage"></property>
复制代码
  1. 异常信息:<p th:text="${exceptionMessage}"></p>
复制代码
13.3.4、进阶示例测试效果



13.4、使用注解配置异常处理器

13.4.1、创建异常处理组件

  1. package online.liaojy.controller;
  2. import org.springframework.ui.Model;
  3. import org.springframework.web.bind.annotation.ControllerAdvice;
  4. import org.springframework.web.bind.annotation.ExceptionHandler;
  5. /**
  6. * @author liaojy
  7. * @date 2023/11/13 - 20:42
  8. */
  9. // @ControllerAdvice 注解:用于将当前类标识为异常处理的组件
  10. @ControllerAdvice
  11. public class ExceptionController {
  12.     // @ExceptionHandler 注解:用来设置(该方法)要处理的异常
  13.     @ExceptionHandler(ArithmeticException.class)
  14.     public String testHandleException(Throwable ex,Model model){
  15.         // 设置共享到请求域中的异常信息的属性名
  16.         model.addAttribute("exceptionMessage",ex);
  17.         // 返回发生异常时的逻辑视图
  18.         return "errorPage";
  19.     }
  20. }
复制代码
13.4.2、测试效果




免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

饭宝

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表