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;
    }
  • 相关阅读:
    OCP-1Z0-053-V12.02-515题
    OCP-1Z0-053-V12.02-605题
    OCP-1Z0-053-V12.02-648题
    OCP-1Z0-053-V12.02-669题
    OCP-1Z0-053-V12.02-83题
    OCP-1Z0-053-V12.02-215题
    OCP-1Z0-053-V12.02-514题
    OCP-1Z0-053-V12.02-666题
    OCP-1Z0-053-V12.02-602题
    Oracle DB执行闪回数据库
  • 原文地址:https://www.cnblogs.com/donghang/p/9233653.html
Copyright © 2011-2022 走看看