Spring mvc3中的@ControlAdvice

在spring 3 mvc中,对于异常的处理,可以使用@ExceptionHandler,例如:



import org.springframework.web.bind.annotation.ExceptionHandler;

//..
@ExceptionHandler(IOException.class)
public String exception(Exception e) {

//..
return "error";
}



用@ExceptionHandler的一个问题是,每个controller中都要这样用,重复了,如果多个controler中都要抛出同样的异常,则麻烦,因此可以使用全局异常@ControlAdvice


@ControllerAdvice
public class ExceptionControllerAdvice {

@ExceptionHandler(Exception.class)
public ModelAndView exception(Exception e) {

ModelAndView mav = new ModelAndView("exception");
mav.addObject("name", e.getClass().getSimpleName());
mav.addObject("message", e.getMessage());

return mav;
}



这里定义了全局的异常,那么在controller中;


import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.servlet.ModelAndView;

@ControllerAdvice
public class ExceptionControllerAdvice {

@ExceptionHandler(Exception.class)
public ModelAndView exception(Exception e) {

ModelAndView mav = new ModelAndView("exception");
mav.addObject("name", e.getClass().getSimpleName());
mav.addObject("message", e.getMessage());

return mav;
}


你可能感兴趣的:(JAVA相关)