1.首先创建一个异常类,要继承RuntimeException
/**
* @author: 林之谦
* @date: 2018/7/27
* @description:
*/
@Getter
public class SellException extends RuntimeException {
private Integer code;
public SellException(ResultEnum resultEnum){
super(resultEnum.getMsg());
this.code = resultEnum.getCode();
}
public SellException(Integer code,String message){
super(message);
this.code = code;
}
}
2.创建SellExceptionHandler监听SellException,在抛出这个异常的时候就可以统一做出反应了
/**
* @author: 林之谦
* @date: 2018/8/2
* @description:
*/
@ControllerAdvice
public class SellerExceptionHandler {
@ExceptionHandler(value = SellException.class)
@ResponseBody
public ResultVO handlerSellerException(SellException e){
return ResultVOUtil.error(e.getCode(),e.getMessage());
}
}
这样子,当我抛出异常的时候,就会直接给页面返回一个我们定义的Json格式的异常,异常的内容从异常中取出
3.抛出异常
@Override
@Transactional
public void increaseStock(List<CarDTO> carDTOList) {
for(CarDTO carDTO : carDTOList){
ProductInfo productInfo = repository.findOne(carDTO.getProductId());
if(productInfo == null){
throw new SellException(ResultEnum.PRODUCT_NOT_EXIST);
}
productInfo.setProductStock(productInfo.getProductStock() + carDTO.getProductQuantity());
repository.save(productInfo);
}
}
4.ResultEnum
/**
* @author: 林之谦
* @date: 2018/7/27
* @description:
*/
@Getter
public enum ResultEnum {
SUCCESS(0,"成功"),
PARAM_ERROR(1,"参数不正确"),
PRODUCT_NOT_EXIST(10,"商品不存在"),
PRODUCT_STOCK_ERROR(11,"商品库存不正确"),
ORDER_NOT_EXIST(12,"订单不存在"),
ORDERDETAIL_NOT_EXIST(13,"订单详情不存在"),
ORDER_STATUS_ERROR(14,"订单状态不正确"),
ORDER_UPDATE_FAIL(15,"订单更新失败"),
ORDER_DETAIL_EMPTY(16,"订单详情为空"),
ORDER_PAY_STATUS_ERROR(17,"订单支付状态不正确"),
CAR_EMPTY(18,"购物车为空"),
ORDER_OWNER_ERROR(19,"该订单不属于当前用户"),
WECHAT_MP_ERROR(20,"微信公众账号方面错误"),
WXPAY_NOTIFY_MONEY_VERIFY_ERROR(21,"微信支付异步通知金额校验不通过"),
ORDER_CANCEL_SUCCESS(22,"订单取消成功"),
ORDER_FINISH_SUCCESS(23,"订单完结成功"),
PRODUCT_STATUS_ERROR(24,"商品状态不正确"),
PRODUCT_ON_SALE_SUCCESS(25,"商品上架成功"),
PRODUCT_OFF_SALE_SUCCESS(26,"商品下架成功"),
LOGIN_FAIL(27,"登录失败,登陆信息不正确"),
LOGOUT_SUCCESS(28,"登出成功"),
;
private Integer code;
private String msg;
ResultEnum(Integer code, String msg) {
this.code = code;
this.msg = msg;
}
}