springmvc之异常处理中ExceptionHanderExceptionResolver
时间:2022-07-23
本文章向大家介绍springmvc之异常处理中ExceptionHanderExceptionResolver,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
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;
}
}
仍可以达到相同的效果。
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释