-
Notifications
You must be signed in to change notification settings - Fork 626
统一异常处理
sqmax edited this page Jan 13, 2019
·
10 revisions
当微信端访问创建订单的接口时,订单创建成功返回给前端的结果如下。
但如果商品不存在,因为在创建订单的业务类中抛出了一个运行时异常,
ProductInfo productInfo=productService.findOne(orderDetail.getProductId());
if(productInfo==null){
throw new SellException(ResultEnum.PRODUCT_NOT_EXIT);
}
返回给前端的就是一些的没有价值的信息:
而我们希望,不管创建订单成功还是失败,我们最好返回给前端一个统一的结果(即包含code、data、msg这三个数据)。我们可以像对待登录一样,在异常处理类SellerExceptionHandler中,对抛出的SellException异常进行一下的处理。
@ExceptionHandler(value = SellException.class)
@ResponseBody
public ResultVO handlerSellerException(SellException e){
return ResultVOUtil.error(e.getCode(),e.getMessage());
}
其中ResultVOUtil是一个工具类,对后端返回数据做统一处理,如下:
public class ResultVOUtil {
public static ResultVO success(Object object){
ResultVO resultVO=new ResultVO();
resultVO.setData(object);
resultVO.setCode(0);
resultVO.setMsg("成功");
return resultVO;
}
public static ResultVO success(){
return success(null);
}
public static ResultVO error(Integer code,String msg){
ResultVO resultVO=new ResultVO();
resultVO.setCode(code);
resultVO.setMsg(msg);
return resultVO;
}
}
这样即使创建订单失败,也会相应给前端一个比较统一的返回结果(错误码+错误描述)。
目录