zoukankan      html  css  js  c++  java
  • springboot中添加全局异常捕获类

    前几天工作中遇到一个项目,前后端分离的,作为后端开发专注开发接口。对于程序中出现的异常如果不进行处理,将报错信息直接返回到前端十=时不优雅的,因此需要对异常进行捕获和处理,但是每个接口都单独处理异常则显得代码十分臃肿,因此写了个异常捕获类对全局出现的异常进行统一处理。

    1.如果程序中出现异常如下:

    @RestController
    public class HelloController {
    
        @RequestMapping("/hello")
        public String hello(String idNum) {
             
           throw new BusinessException("抛出业务异常");
            
        }
    }

    2.全局异常处理类:

     //@ControllerAdvice 该注解定义全局异常处理类
    @ControllerAdvice
    public class GlobalExceptionHandler {
    
        //@ExceptionHandler 该注解声明异常处理方法
        //value=BusinessException.classb表示处理抛出的BusinessException异常
        @ExceptionHandler(value = BusinessException.class) 
        public ReturnResult defaultErrorHandler(HttpServletRequest req, Exception e) {
            ReturnResult result = new ReturnResult(); //出现异常后返回到前端的信息
           result.setCode("-1");
           result.setMsg("出现了业务异常");
           //打印异常信息
          logger.error("调用失败", e);
           
          return result;
        }
    }

    3.访问/hello资源时被2中捕获BusinessException异常的类捕获,并返回前端数据{"code":"-1", "message":"出现业务异常"},   日志打印信息如下:

  • 相关阅读:
    CodeForces 796D bfs
    2017 UESTC Training for Graph Theory
    CodeForces 776D 2-SAT
    CodeForces 776E 数学规律,欧拉
    希尔排序
    怎么把大数据的二维数组转化为一维数组????
    关于while((c=getchar()))的一些应用与思考
    uva 1586 Molar mass(Uva-1586)
    uva 1585 Score(Uva-1585)
    uva1584 Circular Sequence(Uva-1584)
  • 原文地址:https://www.cnblogs.com/fangyan1994/p/12178709.html
Copyright © 2011-2022 走看看