- 在Controller中处理请求异常时,使用try-catch需要处理多种不同的异常,而每个方法都需要重复定义,当逻辑复杂之后代码变得难以维护
- Spring 3.0 引入的@ExceptionHandler注解可以让我们在一个handler方法或者类中统一处理controller抛出的异常,使得写出的代码清晰
- @ExceptionHandler作用于方法上,当Controller中抛出异常时,就会调用这个方法处理异常
参数 |
描述 |
value |
处理的异常类的class,默认处理所有异常 |
示例
@Controller public class TestController { @RequestMapping("/error/runtime") public String TestRuntimeError() { throw new RuntimeException(); return "hello world"; }
@RequestMapping("/error/io") public ModelAndView testIoError() { throw new IOException(); return "index"; }
@ExceptionHandler(IOException.class) public void handlerIoException() { System.out.println("handler IOException"); }
@ExceptionHandler(RuntimeException.class) public void handlerRuntimeException() { System.out.println("handler RuntimeException"); }
@ExceptionHandler public void handlerRuntimeException() { System.out.println("handler Exception"); } } |
注
在@ExceptionHandler()中所有方法指定的异常类型值不能重复