如何使用枚举定义JAVA自定义异常类然后抛到前断呢??具体实现的思路是什么呢!!!!!!在线!!!急!!!!
3条回答 默认 最新
- qq_35227774 2016-06-05 09:40关注
在系统开发过程中,总少不免要自己处理一些异常信息,然后将异常信息变成友好的提示返回到客户端的这样一个过程,之前都是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即可,并且可以自行添加多个异常枚举文件来分别对应不同的模板异常信息。
解决 无用评论 打赏 举报
悬赏问题
- ¥15 MATLAB动图问题
- ¥15 【提问】基于Invest的水源涵养
- ¥20 微信网友居然可以通过vx号找到我绑的手机号
- ¥15 寻一个支付宝扫码远程授权登录的软件助手app
- ¥15 解riccati方程组
- ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
- ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
- ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
- ¥50 树莓派安卓APK系统签名
- ¥65 汇编语言除法溢出问题