在接口开发的过程中,为了程序的健壮性,经常要考虑到代码执行的异常,并给前端一个友好的展示,这里就用到的自定义异常,继承 RuntimeException 类。那么这个 RuntimeException 和普通的 Exception 有什么区别呢。
- Exception: 非运行时异常,在项目运行之前必须处理掉。一般由程序员 try catch 掉。
- 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("用户信息获取失败");
}