类库开发人员使用异常的指导原则

  1. 避免过多的finally块
    可以使用using语句来减少finally代码块。
  2. 避免捕获所有异常
    如果我们设计的类型是一个类库的一部分,那么它绝对不应该捕获所有的异常(即捕获System.Exception),因为它不可能知道应用程序会如何处理这些异常。
    如果应用程序代码抛出了一个异常,应用程序的另一部分很可能期望能捕获该异常。这时我们应该让异常按照筛选器的筛选规则沿着调用堆栈向更高一层传递,直至找到能够处理它的应用程序代码。
  3. 从异常中顺利的恢复
    我们捕获某个特定的异常时,应该完全理解导致抛出异常的情况,并清楚哪些异常类型继承自我们所捕获的异常。
  4. 当异常无法修复时,回滚部分完成的操作
    为了正确回滚部分完成的操作,我们的代码应该捕获所有的异常(包括与CLS不兼容的异常)。因为我们并不关心出现的是哪种错误,我们的目的是让我们的数据结构保持在一个一致的状态。在捕获并处理完异常后,我们应该重新抛出该异常(即使用throw),让调用代码知道发生了异常。
  5. 隐藏实现细节
    在某些情况下,我们捕获一个异常后重新抛出一个更具体的新异常类型对调用类库的开发人员非常有帮助。

  想想自己写的代码,经常是捕获Exception后就不管了。要按照这些指导原则写出优雅的代码,自己还要努力!

posted on 2011-03-30 11:30  辛勤的代码工  阅读(288)  评论(0编辑  收藏  举报