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;
    }




 

你可能感兴趣的:(spring mvc)