这段时间躺平了很久,没怎么学习,今天突然看到群里面一个大一的学生已经学完了springcloud,不禁要我想到最开始卷的时候,顿时兴致突发,打算写一篇文章(其实是之前就打算写的)
我们知道,当程序发生异常的时候,出现的一堆报错会十分的丑陋
我们作为新时代的帅气程序员,怎么能容忍这种情况出现呢?
所以在这里我们需要引入自定义异常
一、定义接口
一般返回的有两个数据,一个是错误代码,一个是错误信息,所以在这里接口需要有两个方法
package com.znb.asiacomshow.exception;
/**
* @Author znb
*/
public interface CustomExceptionInterface {
String getInfo();
int getCode();
}
二、接口实现类
实现接口
package com.znb.asiacomshow.exception;
/**
* @Author znb
* @Description 自定义异常
*/
public class CustomException extends RuntimeException {
private static final long serialVersionUID = 1L;
private Integer code;
private String message;
public CustomException(CustomExceptionInterface exception) {
System.out.println(exception);
this.message = exception.getInfo();
this.code = exception.getCode();
}
@Override
public String getMessage() {
return message;
}
public Integer getCode() {
return code;
}
}
三、枚举自定义异常
用枚举继承自定义的接口异常,那么所有在这个接口下的枚举都是这个类型的异常
package com.znb.asiacomshow.exception.enums;
import com.znb.asiacomshow.exception.CustomExceptionInterface;
/**
* @Author WangYang
* @Date 2022/8/18 10:39 上午
* @Description 4xx 系统异常
*/
public enum SystemExceptionEnum implements CustomExceptionInterface {
/**
* 4xx 系统异常
*/
USER_OVERDUE("USER_OVERDUE",510),
ALREADY_EXISTS("已经存在了",511),
;
/**
* 信息
*/
private String info;
/**
* 错误码
*/
private Integer code;
SystemExceptionEnum(String info, Integer code) {
this.code = code;
this.info = info;
}
@Override
public String getInfo() {
return this.info;
}
@Override
public int getCode() {
return this.code;
}
}
四、结果集封装
当满足异常的条件满足时,返回结果集,结果集中包含了代码和信息
package com.znb.asiacomshow.common.lang;
import com.znb.asiacomshow.exception.CustomException;
import com.znb.asiacomshow.exception.CustomExceptionInterface;
import lombok.Data;
import java.io.Serializable;
@Data
public class Result implements Serializable {
private int code; // 200是正常,非200表示异常
private String msg;
private Object data;
public static Result succ(Object data) {
return succ(200, "操作成功", data);
}
public static Result succ(int code, String msg, Object data) {
Result r = new Result();
r.setCode(code);
r.setMsg(msg);
r.setData(data);
return r;
}
public static Result fail(String msg) {
return fail(400, msg, null);
}
public static Result warning(String msg) {
return fail(200, msg, null);
}
public static Result fail(String msg, Object data) {
return fail(400, msg, data);
}
public static Result fail(int code, String msg, Object data) {
Result r = new Result();
r.setCode(code);
r.setMsg(msg);
r.setData(data);
return r;
}
public static Result fail(CustomException c){
Result r=new Result();
r.setCode(c.getCode());
r.setMsg(c.getMessage());
return r;
}
}
五、返回异常
当满足条件,直接返回对应的异常即可
return Result.fail(new CustomException(SystemExceptionEnum.ALREADY_EXISTS));
看完有用麻烦给个三连吧