1、springmvc通过HandlerExceptionResolver处理程序的异常,包括Handler映射、数据绑定以及目标方法执行时发生的异常。
2、springmvc提供的HandlerExceptionResolver的常用实现类:
- ExceptionHanderExceptionResolver
- DefaultHanderExceptionResolver
- ResponseStatusExceptionResolver
- SimpleMappingExceptionResolver
3、DispatchServlet默认装配HanderExceptionResolver
在java中:
@ExceptionHandler({RuntimeException.class}) public ModelAndView handleArithmeticException2(Exception ex) { System.out.println("出异常了--->:"+ex); ModelAndView mv = new ModelAndView("error"); mv.addObject("exception",ex); return mv; } @ExceptionHandler({ArithmeticException.class}) public ModelAndView handleArithmeticException(Exception ex) { System.out.println("出异常了:"+ex); ModelAndView mv = new ModelAndView("error"); mv.addObject("exception",ex); return mv; } @RequestMapping("/testExceptionHandlerExceptionReslover") public String testExceptionHandlerExceptionReslover(@RequestParam("i") Integer i) { System.out.println("result-->"+(10 / i)); return "success"; }
index.jsp
<a href="testExceptionHandlerExceptionReslover?i=10">testExceptionHandlerExceptionReslover</a>
success.jsp
<p>success</p>
error.jsp
<h4>error page</h4> ${exception}
启动服务器之后:
点击:
将I=10改为i=0并刷新:
在控制台可看到:
说明:
(1)在@ExceptionHandler方法的入参中可以加入Exception类型的参数,该参数即对应发生的异常对象。
(2)在@ExceptionHandler方法的入参中不能传入Map,若希望将异常信息传到前端页面上,需要使用ModelAndView。
(3)@ExceptionHandler方法标记的异常有优先级问题。
(4)@ControllerAdvice:如果在当前Handler中找不到@ExceptionHandler方法标记的出现的异常,则会在@ExceptionHandler标记的类中查找@ExceptionHandler标记的方法来处理异常。
比如我们新建一个java文件,在里面加入:
package com.gong.springmvc.test; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.servlet.ModelAndView; @ControllerAdvice public class HandleException { @ExceptionHandler({ArithmeticException.class}) public ModelAndView handleArithmeticException(Exception ex) { System.out.println("出异常了:"+ex); ModelAndView mv = new ModelAndView("error"); mv.addObject("exception",ex); return mv; } }
仍可以达到相同的效果。
原文地址:https://www.cnblogs.com/xiximayou/p/12194453.html
时间: 2024-11-12 01:59:36