描述分三部分:
1. 自定义枚举类
2. 自定义异常类
3. 测试类
- 定义枚举类
package org.lhj.pro.exception;
import org.springframework.util.StringUtils;
/**
* 创建枚举类
* @author Administrator
*
*/
public enum MyDefinedEnum {
ERROR_ONE("001","参数丢失"),
ERROR_TOW("002","参数验证失败"),
ERROR_THREE("003","查询结果为空");
private String code;
private String msg;
/**
* @return the code
*/
public String getCode() {
return code;
}
/**
* @return the msg
*/
public String getMsg() {
return msg;
}
private MyDefinedEnum(String code, String msg) {
this.code = code;
this.msg = msg;
}
public static MyDefinedEnum getByCode(String code) {
if (StringUtils.isEmpty(code)) {
return null;
}else {
for (MyDefinedEnum iterable_element : MyDefinedEnum.values()) {
if (iterable_element.getCode().equals(code)) {
return iterable_element;
}
}
}
return null;
}
public static MyDefinedEnum getByMsg(String msg) {
if (StringUtils.isEmpty(msg)) {
return null;
}else {
for (MyDefinedEnum iterable_element : MyDefinedEnum.values()) {
if (iterable_element.getMsg().equals(msg)) {
return iterable_element;
}
}
}
return null;
}
}
- 定义异常类
package org.lhj.pro.exception;
public class MyDefinedException extends RuntimeException{
private static final long serialVersionUID = 3992320339135969217L;
/**
* 声明code
*/
private String errorCode;
/**
* 声明msg
*/
private String errorMsg;
/**
* setter getter 方法
*/
public String getErrorCode() {
return errorCode;
}
public void setErrorCode(String errorCode) {
this.errorCode = errorCode;
}
public String getErrorMsg() {
return errorMsg;
}
public void setErrorMsg(String errorMsg) {
this.errorMsg = errorMsg;
}
/**
* 有参构造
*/
public MyDefinedException(String errorCode, String errorMsg) {
super(errorMsg);
this.errorCode = errorCode;
this.errorMsg = errorMsg;
}
/**
* 扩展构造方法
*/
public MyDefinedException(MyDefinedEnum error) {
super(error.getMsg());
this.errorCode = errorCode;
this.errorMsg = errorMsg;
}
public MyDefinedException(MyDefinedEnum error,String description) {
super(error.getMsg()+description);
this.errorCode = errorCode;
this.errorMsg = errorMsg;
}
}
- 测试类
package org.lhj.pro;
import java.util.Random;
import org.junit.Test;
import org.lhj.pro.exception.MyDefinedEnum;
import org.lhj.pro.exception.MyDefinedException;
// 1. 创建枚举类
// 2. 创建异常父类继承Exception或RuntimeException
// 3. 创建异常子类继承异常父类
public class TestException {
@Test
public void testError() {
int key = 0;
for (int i = 0; i < 10; i++) {
key = new Random().nextInt(2)+1;
}
System.out.println(key);
switch (key) {
case 1://参数丢失
System.err.println(MyDefinedEnum.ERROR_ONE.getMsg());
throw new MyDefinedException(MyDefinedEnum.ERROR_ONE);
case 2://参数验证失败
System.err.println(MyDefinedEnum.ERROR_TOW.getMsg());
throw new MyDefinedException(MyDefinedEnum.ERROR_TOW);
case 3://查询结果为空
System.err.println(MyDefinedEnum.ERROR_THREE.getMsg());
throw new MyDefinedException(MyDefinedEnum.ERROR_THREE,"自定义描述");
default:
System.err.println("未获取到相应的随机数");
}
}
@Test
public void testValues() {
MyDefinedEnum[] values = MyDefinedEnum.values();
for (MyDefinedEnum myDefinedEnum : values) {
System.out.println(myDefinedEnum + "--" + myDefinedEnum.getCode() + "--" + myDefinedEnum.getMsg());
MyDefinedEnum byCode = myDefinedEnum.getByCode("001");
System.out.println(byCode);
System.out.println(myDefinedEnum.getByMsg("查询结果为空"));
System.out.println(byCode.getMsg());
}
}
}