在接口开发的过程中,为了程序的健壮性,经常要考虑到代码执行的异常,并给前端一个友好的展示,这里就用到的自定义异常,继承 RuntimeException 类。那么这个 RuntimeException 和普通的 Exception 有什么区别呢。

  1. Exception: 非运行时异常,在项目运行之前必须处理掉。一般由程序员 try catch 掉。
  2. RuntimeException,运行时异常,在项目运行之后出错则直接中止运行,异常由 JVM 虚拟机处理。

**在接口的逻辑判断出现异常时,**可能会影响后面代码。或者说绝对不容忍(允许)该代码块出错,那么我们就用 RuntimeException,但是我们又不能因为系统挂掉,只在后台抛出异常而不给前端返回友好的提示吧,至少给前端返回出现异常的原因。因此接口的自定义异常作用就体现出来了。

1. 代码示例

1.1 直接返回 RuntimeException 异常消息

if (StringUtils.isBlank(assignee)) {
      throw new RuntimeException("注册表中未查到用户手机号");
 }

1.2 继承 RuntimeException 类自定义异常

/**
 * App接口运行时异常
 * Created by lhy on 2019/3/19.
 */
@Data
public class AppRuntimeException extends RuntimeException {
    //默认的错误码
    private String errorCode = "error";
    //默认的错误码
    private String mess = "未知错误";
 
    HttpStatus httpStatus;
 
    /**
     * @param mess
     */
    public AppRuntimeException(String mess) {
        super();
        this.mess = mess;
        this.httpStatus = HttpStatus.OK;
    }
 
    public AppRuntimeException(String mess, HttpStatus httpStatus) {
        super();
        this.mess = mess;
        this.httpStatus = httpStatus;
    }
 
}

1.3 使用自定义异常示例

//获取用户身份信息
CertifiedUser certifiedUser = this.currentUser();
if (null == certifiedUser) {
    throw new AppRuntimeException("用户信息获取失败");
}