定义系统级别的异常代替接口、类中方法处理失败的信息返回
2015-08-23 22:22
375 查看
以前编写代码时,不喜欢在方法中抛出异常。喜欢不管操作成功或失败都喜欢返回结果。按道理这样是没问题的。但是现实的实际项目中业务逻辑层和业务控制层中的逻辑是非常复杂的,往往在这里面会调用其它很多的接口。在调用这些结果往往会对数据处理失败就会停止执行返回错误信息到上一级。按照返回结果的方式的话,就会在每一层代码中有很多的判断,尤其那种需要返回一个对象(比如User)的方法,如果在这个方法中出现错误,我们需要返回错误信息,那么我们就需要在User这个类中添加一个errorMsg变量来处理这种情况。然而在真正的系统中的话有很多方法都要返回对象,那岂不是每个对象对应的类都要增加这个变量。而且在上一层,还需要进行判断。这是多么麻烦的事情啊。
好在JAVA给我们提供了异常,我们可以封装一个我们系统自己的AppException类,在这个类中包含错误码、错误信息、报错模块等信息。当接口中处理的结果是不正确的我们只需抛出这个异常。我们让一级方法就会进行获取,并停止代码往下执行。这样使得我们代码更加的清晰明了,更加具有规范性。同时也使得我们系统性能更好。
AppException我们可以这样定义:
在代码中使用如:
注:在spring mvc中返回结果
好在JAVA给我们提供了异常,我们可以封装一个我们系统自己的AppException类,在这个类中包含错误码、错误信息、报错模块等信息。当接口中处理的结果是不正确的我们只需抛出这个异常。我们让一级方法就会进行获取,并停止代码往下执行。这样使得我们代码更加的清晰明了,更加具有规范性。同时也使得我们系统性能更好。
AppException我们可以这样定义:
public class AppException extends Exception { private static final long serialVersionUID = -1848618491499044704L; private String module; private String code; private String description; public AppException(String module, String code, String message) { super(message); this.module = module; this.code = code; } public AppException(String module, String code, String message, String description) { super(message); this.module = module; this.code = code; this.description = description; } /** * 产生异常的模块 * * @return */ public String getModule() { return module; } /** * 错误码 * * @return */ public String getCode() { return code; } /** * 用户可读描述信息 * * @return */ public String getDescription() { return description; } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append(getClass().getName()); sb.append(": ["); sb.append(module); sb.append("] - "); sb.append(code); sb.append(" - "); sb.append(getMessage()); if (getDescription() != null) { sb.append(" - "); sb.append(getDescription()); } return sb.toString(); } }
在代码中使用如:
if (!"00".equals(status)) { throw new AppException("用户登录", "01", "账号未激活", "账号未激活"); }在最顶层代码中获取该异常:
} catch (AppException e) { LOGGER.error("用户登录异常:" + e.toString(), e); return new Result(false, e.getMessage());//返回错误信息到页面:(错误信息:账号未激活) }
注:在spring mvc中返回结果
相关文章推荐
- 基于七牛Python SDK写的一个同步脚本
- 全文检索技术Lucene入门和学习、与数据库数据结合的demo实现
- Scala学习笔记--Constructor
- poj(1661)——Help Jimmy(二维dp)
- C语言运算符优先级表
- 高阶MapReduce_1_链接多个MapReduce作业
- URAL1277Cops and Thieves Dinic最大流
- Intellij IDEA工具Java web 环境搭建
- RedHat7.0下MySQL5.6.24数据库的安装以及数据库存储目录迁移
- css盒子模型
- leetcode 169: Majority Element
- 用Lucene索引数据库
- Android快速开发框架-AndroidFine,GitHub开源
- 黑马程序员——集合——Set集合,增强for循环,数据结构,泛型,Collections集合工具类
- 总结篇(2)-----第一遍机房收费系统(上机)
- Tomcat与Web应用的配置
- 各种小空间总结
- matlab简单实现SVD的推荐
- python笔记 5
- JavaSE复习日记 : 实例化对象/构造方法和this关键字