SpringMVC常用注释:@ExceptionHandle注释

org.springframework.web.bind.annotation.ExceptionHandle注释的作用对象为方法,并且运行时有效,value()可以指定异常类。
@ExceptionHandle注释源代码如下:
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ExceptionHandler
{
    Class<? extends Throwable>[] value() default();
}

 

@ExceptionHandler注释方法可以支持的参数除了HttpServletRequest,HttpServletResponse等对象之外,还支持一个异常参数,包括一般的异常或自定义异常。如果注释没有指定异常类,会进行默认映射。
示例:@ExceptionHandler处理异常
1.控制器
package org.fkit.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class TestController
{
@GetMapping("/testException")
public String testException()
{
return "testException";
}
@GetMapping("/testExceptionHandler")
public String testExceptionHandler() throws Exception
{
//模拟异常
int i = 5/0;
return "success";
}
/**
* 在抛出异常的时候,Controller会使用@ExceptionHandler注释的方法去处理异常
*/
@ExceptionHandler(value=Exception.class)
public ModelAndView testErrorHandler(Exception e)
{
ModelAndView mav = new ModelAndView();
mav.addObject("ex", e);
mav.setViewName("error");
return mav;
}
}
2.视图
<!DOCTYPE HTML>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" >
<head>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <meta content="text/html;charset=UTF-8"/>
<title>Error Page</title>
</head>
<body>
<h2>Error Page</h2>
<h4>${requestScope.ex.message}</h4>
</body>
</html>