`
swordinhand
  • 浏览: 312336 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Effective Java 读书笔记(8)

    博客分类:
  • JAVA
 
阅读更多
   这一章都是讲异常的,里面很多原则还是要在实践中用到了才有体会啊。有些条目讲的也很简单,除了记一下标题,都不知道还要记什么。异常是有用的东西,但是也给代码带来了相当大的复杂度。用的好,可以让你的程序更健壮,用的不好,代码里到处都是try catch,你都不知道该从哪里看起。
    57,只针对异常的情况才使用异常。不要用异常来控制流程。在这个话题上,不得不说我遇到的一个项目,本来数据库查询查不到结果是很正常的事情,可是这个项目非要生造一个ObjectNotFoundException,查不到数据的时候就抛一个这种异常,把正常的处理流程搞的要多别扭有多别扭,还有人在捕获这个异常时printStackTrace,日志里到处都是。
    58,对可恢复的情况使用受控异常,对编程错误使用运行时异常。
    59,避免不必要的使用受控的异常。
    60,优先使用标准的异常。标准异常看着眼熟,容易理解啊。还是57条里说的那个项目,他们造了一堆奇奇怪怪的异常,最后是除了那个ObjectNotFoundException,其他基本没人用。
    61,抛出与抽象对应的异常。高层代码应该捕获并封装低层次的异常。
    62,每个方法抛出的异常都要有文档。话说回来,即使是提供了文档的标准库,很多人也不看的,反正调用的时候,IDE会提示你要捕获哪些异常,大多数人对异常也不处理,就是printStackTrace了事。不过真想把代码写得好,还是要看看的。
    63,在细节消息中包含能捕获失败的消息。说白了,就是你的异常信息最好包含一些能让人更迅速的发现问题在什么地方的信息。话说有些人连NullPointerException都看不明白的,给他什么信息都没用。
    64,努力使失败保持原子性。如果会失败,尽量不要破坏原来的状态。当然这个很难,有时候根本不可能做到的。比如ConcurrentModifiedException,纵然会抛出异常,改了就是改了。
    65,不要忽略异常。嗯,至少printStackTrace一下啊。话说回来,大部分时候,对异常的处理也就是这样了。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics