zoukankan      html  css  js  c++  java
  • 全局异常捕捉用法解析

    简介

      通过@ControllerAdvice注解可以将对于控制器的全局配置放在同一个位置。
      注解了@Controller的类的方法可以使用@ExceptionHandler、@InitBinder、@ModelAttribute注解到方法上。
      @ControllerAdvice注解将作用在所有注解了@RequestMapping的控制器的方法上
      @ExceptionHandler:用于全局处理控制器里的异常。

    用法

    @ControllerAdvice
    @ResponseBody
    public class BusinessExceptionHandler {
        @ExceptionHandler(value = Exception.class)
        public JsonBackData exceptionHandler(HttpServletRequest request, Exception e) {
            e.printStackTrace();
            JsonBackData back = new JsonBackData();
            if (e instanceof BusinessException) {
                BusinessException ex = (BusinessException) e;
                back.setSuccess(false);
                back.setBackMsg(ex.getMessage());
            }
            return back;
        }

      加了这个全局配置的Bean后,以前我的代码是这样的:

        @RequestMapping(value = "queryDetail")
        @ResponseBody
        public JsonBackData queryDetail(@RequestParam String id) {
            JsonBackData back = new JsonBackData();
            try {
                OpenSourceThrottleAdjustVO vo = openSourceThrottlePlanQueryService.findById(id);
                back.setBackData(vo);
                back.setSuccess(true);
                back.setBackMsg("查询详细信息成功");
            } catch (BusinessException e) {
                back.setSuccess(false);
                back.setBackMsg("查询详细信息失败:" + e.getMessage());
            }
            return back;
        }

     多了很多无关信息。几乎每个类都要try catch一下,代码极度冗余。
    但是加了上面的全局处理控制器的异常处理后。代码就变成了下面的了。

    @RequestMapping(value = "queryDetail")
    @ResponseBody
    public JsonBackData queryDetail(@RequestParam String id) {
        JsonBackData back = new JsonBackData();
        OpenSourceThrottleAdjustVO vo = openSourceThrottlePlanQueryService.findById(id);
        back.setBackData(vo);
        back.setSuccess(true);
        back.setBackMsg("查询详细信息成功");
        return back;
    }
  • 相关阅读:
    不可小视视图对效率的影响力
    Maximum Margin Planning
    PhysicsBased Boiling Simulation

    Learning Behavior Styles with Inverse Reinforcement Learning
    Simulating Biped Behaviors from Human Motion Data
    Nearoptimal Character Animation with Continuous Control
    Apprenticeship Learning via Inverse Reinforcement Learning
    回报函数学习的学徒学习综述
    Enabling Realtime Physics Simulation in Future Interactive Entertainment
  • 原文地址:https://www.cnblogs.com/jxldjsn/p/10825076.html
Copyright © 2011-2022 走看看