代码之家  ›  专栏  ›  技术社区  ›  WayneC

.NET中的错误代码/消息管理方法

  •  6
  • WayneC  · 技术社区  · 14 年前

    在多层应用程序中寻找管理错误代码和消息的建议/最佳实践。具体来说,比如:

    1. 错误代码应该在哪里定义?枚举?班级?
    2. 错误信息或与错误代码相关的进一步详细信息是如何关联的?资源文件?枚举值等的属性?
    3. 例如,如果您有一个由DAL、BLL、UI和公共项目组成的多层应用程序,那么是否应该为所有层提供一个庞大的代码列表,或者这些代码是按项目/层扩展的?

    更新: 重要的是,我不能仅依赖异常和自定义异常类型来报告错误,因为此应用程序的某些客户端将通过Web服务(SOAP&rest)进行报告。

    欢迎提出任何建议!

    2 回复  |  直到 14 年前
        1
  •  6
  •   Hans Passant    14 年前

    错误代码是旧的skool,在不支持异常的COM和C编程环境中需要它们。现在,您使用异常来通知客户机代码或用户有关问题的信息。.NET中的异常是自描述性的,它们具有类型、消息和诊断。

    您需要区分两种类型的异常,一种是可合理恢复的异常,另一种是您不知道到底出了什么问题,或者您如何从中恢复的异常。后者是目前为止最常见的,你需要一个人来采取纠正措施。使用一个标准的内置.NET异常类型来引发它们。IllegalOperationException、FormatException、ArgumentException是常见的选择。如果是后端引发了这样一个异常,那么您只需要在不改变的情况下通过它。您通常需要一个finally块来确保您的内部状态是一致的,有时是一个包含简单的throw来恢复状态的catch块。

    您认为可恢复的任何内容都应该使用从异常类派生的声明自己的异常类型来引发。这使得代码上游有机会编写catch子句并做一些有意义的事情。您将需要生成一个描述问题的消息,如果上游代码实际上没有处理它,那么如果您支持本地化,那么需要从硬编码字符串或资源中检索消息的文本。

        2
  •  2
  •   John Saunders    14 年前

    我认为最好创建一个公共项目(或ApplicationFramework项目)并将 例外 公共对象 关于它。

    它总是一个 好主意 有一个包含类基类的应用程序框架(特别是在ui-pagebase-masterbase-modulebase等中)

    很明显,你必须把你的类和枚举放在 BLL 项目。

    注意三层 不代表 3项目。您的BLL中可以有5个项目。

    最后别忘了用 埃尔马 或其他类似工具。