zoukankan      html  css  js  c++  java
  • 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";  
        }  
          
    }  
  • 相关阅读:
    通过json动态创建控制器
    记一次bug解决!改变思路解决问题的同时,还需要弄明白是什么原因。
    __proto__,prototype,constructor
    事件:compositionstart & compositionend,解决oninput获取到拼音的问题。
    事件绑定----阻止冒泡失效
    预装的win10系统如何恢复
    rem.js
    vscode 使用 github仓库
    nginx使用
    伸缩盒
  • 原文地址:https://www.cnblogs.com/raphael5200/p/7514693.html
Copyright © 2011-2022 走看看