【问题标题】:Can someone cite a good reference for programming with exceptions?有人可以引用一个很好的例外编程参考吗?
【发布时间】:2010-10-01 15:12:08
【问题描述】:

我更喜欢错误管理的“rc”错误代码返回样式。我同意这带来的挑战可以通过 throw-catch 更好地解决,但是,我仍然觉得我没有以干净和可维护的风格进行设计和实施。因此,我正在寻找一本讨论该模式的好书,而不仅仅是一本参考书。

参考书目也可以...

以下答案的摘录,“敏捷程序员的实践”,我觉得特别引人注目:

**Keeping Your Balance**

• Determining who is responsible for handling an exception is part of design.
• Not all situations are exceptional.
• Report an exception that has meaning in the context of this code. A NullPointerException is pretty but just as useless as the null object described earlier.
• If the code writes a running debug log, issue a log message when an exception is caught or thrown; this will make tracking them down much easier.
• Checked exceptions can be onerous to work with. No one wants to call a method that throws thirty-one different checked exceptions. That’s a design error: fix it, don’t patch over it.
• Propagate what you can’t handle.

【问题讨论】:

    标签: design-patterns exception coding-style throw try-catch


    【解决方案1】:

    我还没有找到一本专门讨论异常处理的书,但有一些书用一节或一章的篇幅来讨论这个主题。

    作为入门和与语言无关的方法,请参阅 [Martin, Ch. 7][麦康奈尔,Ch。 8.4] 还处理了非常一般的异常处理。对于使用例外的额外好建议,请参阅[Subramaniam, Hunt, Ch. 36, 37]。我还找到了 [Richter, Ch. 20] 非常有用,尽管它特定于 .NET 和 C#。不过,有些部分也适用于其他语言。

    建议:作为编程中抛出异常和错误码返回风格的替代方法,研究一下万维网中的“特殊情况模式”或“空对象模式”。

    • [Martin] Martin, C. R. (2008)。干净的 代码:敏捷软件手册 工艺。普伦蒂斯大厅 国际。
    • [麦康奈尔]麦康奈尔, S. (2004)。代码完成。
    • [Subramaniam,亨特] Subramaniam, V. 和 Hunt, A. (2006)。 敏捷开发人员的实践。 务实的程序员。
    • [里氏] 里希特,J. (2010)。通过 C# 进行 CLR。 微软出版社。

    【讨论】:

    • 我只检查了引文“敏捷开发人员的实践”,并得出了一些优秀的指导方针以及与困扰我的场景的讨论。因此,我认为这是我一直在寻找的起点,并授予它作为答案。随着时间的推移,我希望这会得到进一步的完善和验证。 - 谢谢西奥。
    • 你也应该去看看 [Martin]。它描述了返回代码风格的缺陷,并将其与异常处理进行了对比。 [Martin] 使用代码示例非常令人印象深刻地说明了这一点。 [Subramaniam, Hunt] 更多的是实践而非代码。
    【解决方案2】:

    我不知道有什么书专门讨论异常抛出/使用的最佳实践。它可能是一个太具体的主题,无法保证整本书。此外,每种编程语言(C++ 与 Java)以及语言内的编程上下文(C# winforms 与 C# asp.net)的最佳实践可能会有很大差异。

    我怀疑你最好的选择是谷歌它;您可能会发现一些涉及该主题的博客文章(希望最好/最受尊敬的文章将接近谷歌搜索结果的顶部)。

    【讨论】:

    • 感谢 moikemanne - 实际上,我在与怪物打交道时冲浪数周后发布了这个问题。我完全同意您对特异性的评估,这可能是我在社区中搜索的原因。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-29
    • 2013-02-04
    • 1970-01-01
    • 2011-04-23
    • 2013-12-16
    • 1970-01-01
    相关资源
    最近更新 更多