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

1、先创建一个接口,里面提供两个方法,一个是getErrorCode, 一个是getErrorMessage,如:

public interface IErrorCode {

    public String getErrorCode();

    public String getErrorMessage();

}

  

2、创建一个枚举,实现IErrorCode里的方法

public enum SysErrorEnums implements IErrorCode {

    /**参数为空*/
EMPTY_PARAME("A11002","参数为空"),
/**参数错误*/
ERROR_PARAME("A11002","参数错误"); private String errorCode;
private String errorMessage; private SysErrorEnums(String errorCode, String errorMessage) {
this.errorCode = errorCode;
this.errorMessage = errorMessage;
} public String getErrorCode() {
return errorCode;
} public void setErrorCode(String errorCode) {
this.errorCode = errorCode;
} public String getErrorMessage() {
return errorMessage;
} public void setErrorMessage(String errorMessage) {
this.errorMessage = errorMessage;
}
}

3、定义一个自定义的异常类

public class BusinessException extends RuntimeException {

    private static final long serialVersionUID = 1L;

    private IErrorCode iErrorCode;

    private String errorCode;
private String errorMessage;
private Map<String, Object> errorData; public BusinessException(IErrorCode iErrorCode) {
super();
this.iErrorCode = iErrorCode;
this.errorCode = iErrorCode.getErrorCode();
this.errorMessage = iErrorCode.getErrorMessage();
} //其他get、set、构造方法
}

4、代码中抛异常

if(true){
throw new BusinessException(SysErrorEnums.EMPTY_OBJ);
}

5、可以通过异常拦截器来拦截错误,获取错误后统一格式输出;

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

最新文章

  1. nefu1109 游戏争霸赛(状压dp)
  2. 如何设置SharePoint 2013 的根网站集下的“更改此术语的目标页面”
  3. [译]Godot系列教程二 - 场景实例化(Instancing)
  4. FZU1894 志愿者选拔 --单调队列
  5. Webdriver - Selenium Grid Configuration
  6. [Sciter系列] MFC下的Sciter&ndash;4.HTML与图片资源内置
  7. js中的call及apply的运用
  8. Masstransit开发基于消息传递的分布式应用
  9. css——样式表分类,选择器
  10. LeetCode Weekly Contest
  11. Unity strip engine code可能会使程序崩溃
  12. Arcade初探[0] 目录与导航
  13. 洗礼灵魂,修炼python(80)--全栈项目实战篇(8)—— 计算器
  14. mysql老是停止运行该怎么解决
  15. WPF 滚动文字控件MarqueeControl
  16. 服务请求比较慢SYN flooding
  17. [4]Windows内核情景分析---内核对象
  18. JavaBean的getters和setters方法自动生成
  19. babel 基本
  20. MySQL赋权

热门文章

  1. 运放的PID电路
  2. 六:在线工具网站,让你PC上要装的软件少一半!
  3. 一起写框架-MVC框架-基础功能-Date类型数据绑定(七)
  4. [转载] Java集合---HashMap源码剖析
  5. 基于.NET CORE微服务框架 -surging 基于messagepack、protobuffer、json.net 性能对比
  6. python基础-------函数(二)
  7. FreeRTOS 移植到WIN10
  8. DLL的导出函数重定向机制
  9. x86平台上的Windows页表映射机制
  10. a标签嵌套解决方案