springboot日记之自定义异常

一直以来我就是想统一下异常,觉得程序中到处抛异常时真的烦恼,通过一中午简单了解,终于做出了一个简单的版本。

/**
 * 
 */
package learn.until;

import learn.until.staticdata.RestCode;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 自定义异常
 * 
 * @Author: ljg 2020年3月12日 上午10:45:17
 * 
 * @Desc: <p>
 * </p>
 */
@Data
@EqualsAndHashCode(callSuper = false)
public class HYException extends Exception {
    /**
     * 序列化ID
     */
    private static final long serialVersionUID = 1L;
    private int code;

    public HYException(RestCode restCode) {
        super(restCode.getMsg());
        this.code = restCode.getCode();
    }

}

上面的代码我只做了一个实例,但是这个实例其实很不方便的,因为参数定义为枚举类型,但是你不可能每一种异常都在枚举类中新增,所以不是很实用,后面我就再加了一个生成实例的方式,这样就比较通用了。

  public HYException(int code, String msg) {
        super(msg);
        this.code = code;
    }

当然这个还是很多扩展方式的,我刚开始学习,先列举这么 简单的方式。
后面我还加了一个公共的异常类,为什么要加这个公共的异常类,原因很简单,为的就是control层返回到前端是少些几行代码,统一下异常。

/**
 * 
 */
package learn.until;

import learn.until.staticdata.RestCode;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 捕获异常类
 * 
 * @Author: ljg 2020年3月12日 上午10:37:44
 * 
 * @Desc:
 * <p>
 * 捕获异常的类,返回信息给浏览器,可以自定义返回的code,msg等信息
 * </p>
 */

public class ExceptionHandleUtil {

    private final static Logger logger = LoggerFactory.getLogger(ExceptionHandleUtil.class);

    /**
     * 处理异常
     * 
     * @param <T> 泛型
     * 
     * @Author ljg 2020年3月12日 上午10:41:40
     * @param e 异常
     * @return 返回异常处理类
     */
    public static <T> RestResponse<T> handle(Exception e) {
        logger.error("ExceptionHandleUtil", e);
        if (e instanceof HYException) {
            HYException hyException = (HYException) e;
            return RestResposeUtil.error(hyException.getCode(), hyException.getMessage());
        } else {
            return RestResposeUtil.error(RestCode.UNDEFINED_ERROR.getCode(), RestCode.UNDEFINED_ERROR.getMsg());
        }
    }
}

使用control层,就是在try–catch后将异常传个这个类,统一返回数据对象,方便简单

public RestResponse<String> login(@RequestBody UserInfoCond userInfoCond) {
        RestResponse<String> response = null;
        try {
            response = RestResposeUtil.createResponse(RestCode.SUCCESS, loginService.login(userInfoCond));
        } catch (Exception e) {
            response = ExceptionHandleUtil.handle(e);
        }
        return response;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值