下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922
论坛 >编程语言 >JAVA使用异常的最佳实践

JAVA使用异常的最佳实践

课课家iOS游客发布于 2017-06-27 10:59查看:714回复:1

        下面的部分我们列出了客户端代码处理API抛出异常的一些最佳实现方法。

        1. 记得释放资源

        如果你正在用数据库或网络连接的资源,要记得释放它们。如果你使用的API仅仅使用unchecked exception,你应该用完后释放它们,使用try-final。

1498532304288750.jpg

        DBUtil是一个关闭连接的工具类。最重要的部分在于finally,无论异常发不发生都会执行。在这个例子中,finally关闭了连接,如果关闭过程中有问题发生的话,会抛出一个RuntimeException。

        2. 不要使用异常作控制流程之用

        生成栈回溯是非常昂贵的,栈回溯的价值是在于调试。在流程控制中,栈回溯是应该避免的,因为客户端仅仅想知道如何继续。

        下面的代码,一个自定义的异常MaximumCountReachedException,用来控制流程。

1498532331950732.jpg

        useExceptionsForFlowControl()使用了一个无限的循环来递增计数器,直至异常被抛出。这样写不仅降低了代码的可读性,也让代码变得很慢。记住异常仅用在有异常发生的情况。

        3. 不要忽略异常

        当一个API方法抛出checked exception时,它是要试图告诉你你需要采取某些行动处理它。如果它对你来说没什么意义,不要犹豫,直接转换成unchecked exception抛出,千万不要仅仅用空的{}catch它,然后当没事发生一样忽略它。

        4. 不要catch最高层次的exception

        Unchecked exception是继承自RuntimeException类的,而RuntimeException继承自Exception。如果catch Exception的话,你也会catch RuntimeException。

1498532355241023.jpg

        上面的代码会忽略掉unchecked exception。

        5. 仅记录exception一次

        对同一个错误的栈回溯(stack trace)记录多次的话,会让程序员搞不清楚错误的原始来源。所以仅仅记录一次就够了。

        总结

        这里是我总结出的一些异常处理最佳实施方法。我并不想引起关于checked exception和unchecked exception的激烈争论。你可以根据你的需要来设计代码。我相信,随着时间的推移,我们会找到些更好的异常处理的方法的。

收藏(0)0
查看评分情况

全部评分

此主贴暂时没有点赞评分

总计:0

回复分享

共有1条评论

  • IT宅男
  • mr jack
  • Mr ken
  • Mright
  • cappuccino
  • YUI
  • 课课家运营团队
  • 课课家技术团队1
  • 酸酸~甜甜
  • 选择版块:

  • 标题:

  • 内容

  • 验证码:

  • 标题:

  • 内容

  • 选择版块:

移动帖子x

移动到: