spring mvc异常统一处理(ControllerAdvice注解)

@ControllerAdvice  
public class GlobalExceptionHandler {  
      
    private final static AsJEELogger LOG = AsJEELoggerFactory.getLogger(GlobalExceptionHandler.class);  
      
    private final static String EXPTION_MSG_KEY = "message";  
      
    @ExceptionHandler(BusinessException.class)  
    @ResponseBody  
    public void handleBizExp(HttpServletRequest request, Exception ex){  
        LOG.info("Business exception handler  " + ex.getMessage() );  
        request.getSession(true).setAttribute(EXPTION_MSG_KEY, ex.getMessage());  
    }  
      
    @ExceptionHandler(SQLException.class)  
    public ModelAndView handSql(Exception ex){  
        LOG.info("SQL Exception " + ex.getMessage());  
        ModelAndView mv = new ModelAndView();  
        mv.addObject("message", ex.getMessage());  
        mv.setViewName("sql_error");  
        return mv;  
    }  
  
}  

public class BusinessException extends Exception{  
  
    private static final long serialVersionUID = 1L;  
      
    //业务类型  
    private String bizType;  
    //业务代码  
    private int bizCode;  
    //错误信息  
    private String message;  
      
    public BusinessException(String bizType, int bizCode, String message){  
        super(message);  
        this.bizType = bizType;  
        this.bizCode = bizCode;  
        this.message = message;  
    }  
  
    public BusinessException(String message){  
        super(message);  
        this.bizType = "";  
        this.bizCode = -1;  
        this.message = message;  
    }  
  
    public BusinessException(String bizType, String message){  
        super(message);  
        this.bizType = bizType;  
        this.bizCode = -1;  
        this.message = message;  
    }  
      
    public BusinessException(int bizCode, String message){  
        super(message);  
        this.bizType = "";  
        this.bizCode = bizCode;  
        this.message = message;  
    }  
  
    public String getBizType() {  
        return bizType;  
    }  
  
    public void setBizType(String bizType) {  
        this.bizType = bizType;  
    }  
  
    public int getBizCode() {  
        return bizCode;  
    }  
  
    public void setBizCode(int bizCode) {  
        this.bizCode = bizCode;  
    }  
  
    public String getMessage() {  
        return message;  
    }  
  
    public void setMessage(String message) {  
        this.message = message;  
    }  
  
}  


@Controller  
@RequestMapping("/security/user")  
public class UserController  extends AbstractController<User>{  
  
    @Resource  
    private UserService userService;  
    @Resource  
    private ServiceFacade serviceFacade;  
  
    @RequestMapping("login")  
    public String login() {   
        return "login";  
    }  
      
    @RequestMapping("login2")  
    public String login2() throws Exception {  
        throw new SQLException("出错鸟。。。。。。。。。");  
    }     
      
    @RequestMapping("login3")  
    public String login3() throws Exception {   
        throw new BusinessException("业务执行异常");  
    }  
      
    //此方法抛出的异常不是由GlobalExceptionHandler处理  
    //而是在catch块处理  
    @RequestMapping("login4")  
    public String login4() {   
        try {  
            throw new BusinessException("业务执行异常");  
        } catch (BusinessException e) {  
            e.printStackTrace();  
        }  
        return "login";  
    }  
      
}  

 

转载于:https://www.cnblogs.com/raphael5200/p/7514693.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值