• 测试技术
  • 博客
  • 视频
  • 开源
  • 论坛
  • 沙龙
  • 下载
  • 杂志
  • 招聘

字号: | 推荐给好友 上一篇 | 下一篇

Java 理论与实践: 平衡测试,第 2 部分

发布: 2008-6-13 14:04 | 作者: 不详 | 来源: 领测软件测试网编辑整理 | 查看: 23次 | 进入领测软件测试网论坛讨论

领测软件测试网

*t:p@ b.MG.T!WY&l软件测试技术门户 WNm2E8Z)x5jd3I&kjxz
清单 2. RuntimeException 捕获 bug 模式 —— 不要执行此模式
~*N#]Y6w
public void addInstance(String className) {
    try {
        Class clazz = Class.forName(className);
        objectSet.add(clazz.newInstance());
    }
    catch (Exception e) {
        logger.log("Exception in newInstance", e);
    }
}
软件测试技术门户,I1]!_~1z X^#o$A
软件测试技术门户 VbBh7d:s^ G,M5h0W9Y

bug 模式通常源自语言的模糊功能或类库;出现此 bug 模式是因为 RuntimeException 扩展了 Exception,这稍微有点违反常理。对 RuntimeException 捕获的修复非常容易 —— 您需要了解以下问题:首先捕获 RuntimeException,并在捕获 Exception 之前重新将其抛出,如清单 3 所示。不过,即使知道 bug 模式及其修复方法,在代码审查过程中也很容易忘记执行它或忽略它,并且编译器也不会通知您。这是引入 bug 模式的原因,帮助您避免违犯 “您已较好地了解” 之类的错误。 软件测试技术门户uo#n N uq?5gx(uv


,X kwV7a+C"v清单 3. 通过显式处理 RuntimeException 修复 RuntimeException 捕获
P qJ)C,U!s$\ P6N%N
public void addInstance(String className) {
    try {
        Class clazz = Class.forName(className);
        objectSet.add(clazz.newInstance());
    }
    catch (RuntimeException e) {
        throw e;
    }
    catch (Exception e) {
        logger.log("Exception in newInstance", e);
    }
}

9e@!@2~