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);  
            }  
          
        }  
  • 相关阅读:
    Electron应用打包、自动升级
    使用javascript处理nginx的请求
    使用Electron开发桌面应用
    VSCode、VBox搭建C/C++开发环境
    树莓派搭建Nexus2私服
    Tom猫小游戏功能实现
    如何配置webpack让浏览器自动补全前缀
    git 常用操作
    数组的一些常用操作
    ES6 的模块化
  • 原文地址:https://www.cnblogs.com/xingzc/p/8623490.html
Copyright © 2011-2022 走看看