如何使用枚举定义JAVA自定义异常类 5C

如何使用枚举定义JAVA自定义异常类然后抛到前断呢??具体实现的思路是什么呢!!!!!!在线!!!急!!!!

3个回答

在系统开发过程中,总少不免要自己处理一些异常信息,然后将异常信息变成友好的提示返回到客户端的这样一个过程,之前都是new一个自定义的异常,当然这个所谓的自定义异常也是继承RuntimeException的,但这样往往会造成异常信息说明不一致的情况,所以就想到了用枚举来解决的办法。

1,先创建一个接口,里面有两个方法,一个是getCode, 一个是getMessage
Java代码
public interface ExceptionEnums {

public int getCode();  

public String getMessage();  

}

2,创建一个枚举,实现ExceptionEnums里的方法
Java代码
public enum DBExceptionEnums implements ExceptionEnums{

UNIQUE_KEY(10001, "主键约束错误");  

public int code;  
public String message;  

private UserEnums(int code, String message){  
    this.code = code;  
    this.message = message;  
}  


@Override  
public int getCode() {  
    return code;  
}  

@Override  
public String getMessage() {  
    return message;  
}  

}

3,定义一个自定义的异常类
Java代码
public class ServiceException extends RuntimeException{

private ExceptionEnums exceptionEnums;

public ServiceException(ExceptionEnums exceptionEnums){

this.exceptionEnums = exceptionEnums;

}

public ExceptionEnums getExceptionEnums(){

return exceptionEnums;

}

.....其它get/set方法

}

4,业务代码中抛出ServiceException
Java代码
if(true){

throw new ServiceException(DBExceptionEnums.UNIQUE_KEY);

}

5,Controller处理抛出的异常
Java代码
try{

}catch(ServiceException se){

logger.dubug(se.getMessage, se);

return buildExceptionJSON(se); //返回异常JSON

}

buildExceptionJSON(示例)
Java代码
private String buildExceptionJSON(ServiceException se){

ExceptionEnums enums = se.getExceptionEnums();

return "{'code':"+ enums.getCode+",'message':' "+enums.getMessage()+"'}";

}

这样做的好处是可以高度统一所有异常返回的code及message, 如果需要更改提示信息或代号,只需更改DBExceptionEnums即可,并且可以自行添加多个异常枚举文件来分别对应不同的模板异常信息。

一般做法

1、定义一个异常类型类,里面new 异常类创建一个异常类型
2、程序中直接调用定义的类型

可能你的Android版本太低不支持enum

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问