Exception 异常处理体系结构

Exception 异常处理体系结构,exception,architecture,Exception,Architecture,有人有处理异常的最佳实践吗 在搜索web时,我在代码级别上找到了很多最佳实践(不要捕获一般异常,不要重复新异常等)。我要寻找的是更高级别上的最佳实践,比如: 在应用程序中,捕获ui级别的异常 记录尽可能多的细节,显示友好的错误消息 在更多类似SOA的应用程序中,区分功能性异常(您请求特定客户并期望找到一个,但没有找到)和技术性异常(数据库离线) 不要对功能异常使用异常 区分致命异常和非致命异常 区分使重试成为可能或使重试完全无用的异常 提醒维护人员的模式 非常感谢您的任何想法和帮助。我还想区

有人有处理异常的最佳实践吗

在搜索web时,我在代码级别上找到了很多最佳实践(不要捕获一般异常,不要重复新异常等)。我要寻找的是更高级别上的最佳实践,比如:

  • 在应用程序中,捕获ui级别的异常
  • 记录尽可能多的细节,显示友好的错误消息
  • 在更多类似SOA的应用程序中,区分功能性异常(您请求特定客户并期望找到一个,但没有找到)和技术性异常(数据库离线)
  • 不要对功能异常使用异常
  • 区分致命异常和非致命异常
  • 区分使重试成为可能或使重试完全无用的异常
  • 提醒维护人员的模式

非常感谢您的任何想法和帮助。

我还想区分:

  • 由函数调用方引起的异常
  • 函数内部错误导致的异常
这对我来说是一个明确的分离方式:

  • 动态异常(可能发生,但不需要明确捕获,可能是非法参数)
  • 静态异常(由于应用程序内部存在缺陷,必须明确处理)

    • .NET特定,但肯定有一些有价值的信息


      你可能做得比浏览微软的代码和文档糟糕得多。对于很多场景来说,这可能是过火了,但肯定是全面的。

      @Ilya:

      这可能是Joel写过的最糟糕的文章之一(对于那些没有读过链接的人来说,他认为“例外被认为是有害的”,所以不要使用它们)

      除了例外,Joel有两个问题:

    • 它们在源代码中是不可见的

      • 但未处理的状态返回也是如此。正确处理状态返回会扰乱方法的正常流程,使其更难阅读
    • 它们为函数创建了太多可能的退出点

      • 那又怎样?处理故障几乎总是要求您提前返回。明确退出点只会导致代码混乱
    • Ned Batcheld对Joel有一个很好(而且要长得多)的回复。乔尔有一个简短的回复,内德再次回复


      布拉德·艾布拉姆斯(Brad Abrams)也有一篇关于例外价值的非常好的文章。

      从这个链接中可以找到一个链接,这是我所寻找的一个很好的开始。谢谢,我是一个C类人,不喜欢在没有goto的情况下工作。所以我不完全同意乔尔的观点,但他肯定有道理。这篇文章是相关的,至少是因为它给了你们另一种观点,对我来说,有可能阅读你们提到的回复文章。事实上,在阅读了重播之后,我并没有被说服。但是我不想在这里开始理论上的讨论。所以你的观点是你太懒了,不能正确地编码,所以我们就用例外吧?@Pablo Ariel:不,这不是我的观点。你读过我写的东西吗?我花了一些时间看了这篇文章,里面有一些有趣的东西。但它仍然是低水平和有点旧。感谢您的努力。另一个外观显示,它最近(2008年10月)作为范围更广的企业库的一部分进行了更新这篇文章不是最适合软件工程网站吗?