zoukankan      html  css  js  c++  java
  • 统一异常处理@ExceptionHandler

    异常处理功能中用到的注解是:@ExceptionHandler(异常类型.class). 
    这个注解的功能是:自动捕获controller层出现的指定类型异常,并对该异常进行相应的异常处理. 
    比如我要在controller层中处理InsertMessageException类型异常,我就可以在controller层的类中定义以下方法:

    @ExceptionHandler(InsertMessageException.class)
    public ModelAndView HandlerInsertMessageException(Exception ex){
        ModelAndView modelAndView= new ModelAndException();
        //相应的处理方法
        //...
        //...
        //比如说获取异常信息,并添加到modelandview中,跳转到指定异常页面
        modelAndView.addObject("exceptionMessage",ex.getMessage());
        modelAndView.setViewName("/exceptionPage");
        return modelAndView;
    }

    通过这样一个被@ExceptionHandler注解修饰的方法,就能捕获controller层所有抛出的InsertMessageException类型异常,并对异常进行相应的处理

    如果想一个方法处理多种类型异常,就需要在@ExceptionHandler的括号中用大括号添加所想要处理的异常类型,用”,”隔开 
    例如:@ExceptionHandler({InsertException.class,DeleteException.class})

    ===

    使用 @ControllerAdvice,不用任何的配置,只要把这个类放在项目中,Spring能扫描到的地方。就可以实现全局异常的回调

       @ControllerAdvice  
        public class SpringExceptionHandler{  
          /** 
             * 全局处理Exception 
             * 错误的情况下返回500 
             * @param ex 
             * @param req 
             * @return 
             */  
            @ExceptionHandler(value = {Exception.class})  
            public ResponseEntity<Object> handleOtherExceptions(final Exception ex, final WebRequest req) {  
                TResult tResult = new TResult();  
                tResult.setStatus(CodeType.V_500);  
                tResult.setErrorMessage(ex.getMessage());  
                return new ResponseEntity<Object>(tResult,HttpStatus.OK);  
            }  
          
        }  
  • 相关阅读:
    三大程序结构
    数组
    php多种排序
    购物车多选提交订单
    AJAX无刷新加购物车
    php常用
    通过判断加载遍历首页内容
    登陆权限验证
    PHP打印数据和mb_substr函数
    apollo3.5搭建教程(调试成功)
  • 原文地址:https://www.cnblogs.com/xingzc/p/8623490.html
Copyright © 2011-2022 走看看