全局异常捕捉用法解析

简介

  通过@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; }

转载于:https://www.cnblogs.com/jxldjsn/p/10825076.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值