异常概述
开发中,在service方法中,如果传递的参数是空,我们需要不是要返回什么值,而是要抛一个异常,
所以对异常类就发挥它的作用了。
在开发中,异常类只需要展示客户 “服务端”异常,还是“客户端”异常; 而作为服务器的运维人员,或者开发人员,要知道 具体哪种异常。
package com.gostop.cloud.common.exception;
import com.gostop.cloud.common.constant.DefaultErrorConstant;
public class BusinessException extends BaseException {
private GostopCloudIError error;
private String extMessage;
public BusinessException() {
this.error = DefaultErrorConstant.SERVER_EXCEPTION;
this.extMessage = null;
}
public BusinessException(String message) {
super(message);
this.error = DefaultErrorConstant.SERVER_EXCEPTION;
this.extMessage = message;
}
GostopCloudIError error 是一个枚举类
package com.gostop.cloud.common.constant;
import com.gostop.cloud.common.exception.GostopCloudIError;
public enum DefaultErrorConstant implements GostopCloudIError {
SUCCESS("0000", "操作成功"),
SYSTEM_INTERNAL_ERROR("0001", "系统内部异常"),
RUNNING_TIME_SYSTEM_FAILED("0001", "运行时异常"),
SERVER_EXCEPTION("0002", "服务端异常"),
SERVER_EXCEPTION_400("0002", "服务繁忙,请稍后重试"),
SERVER_EXCEPTION_403("0002", "请求的URL不允许访问"),
SERVER_EXCEPTION_404("0002", "请求的URL不存在"),
SERVER_EXCEPTION_500("0002", "请求的URL服务器错误"),
SQL_EXCEPTION("0003", "服务运行SQLException异常"),
CLIENT_EXCEPTION("0004", "客户端异常"),
ACCESS_DENIED("0005", "授权失败,禁止访问"),
INVALID_PARAMETER("0006", "无效参数"),
SERVICE_NOT_FOUND("0007", "服务不存在"),
如何构建一个 要抛出的异常呢?
如何传参
如果只传一个String message ,那默认就是server端异常; extMessage就是null了
如果传一个error,会好一些, error是一个枚举类对象,包括errorCode 和 errorMsg
这个就够了!!!
至于extMessage为空那就不管了。
正确使用
直接传一个 枚举对象就ok’了!
捕捉 依靠spring的@Transaction注解,就可以实现对异常的捕捉了。。