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

Way*_*neC 7 .net error-handling exception-handling n-tier-architecture

寻找有关在多层应用程序中管理错误代码和消息的建议/最佳实践.特别是:

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

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

欢迎任何建议!

Han*_*ant 6

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

您需要区分两种类型的异常,即可合理恢复的异常以及您不知道到底出错的方式或从中恢复的方式.后者是迄今为止最常见的,你需要一个人来采取纠正措施.使用标准的内置.NET异常类型之一来引发它们.IllegalOperationException,FormatException,ArgumentException是常见的选择.如果它是引发这种异常的后端,那么你只想在不改变的情况下通过它.您通常需要一个finally块来确保内部状态是一致的,有时候一个catch块包含一个简单的throw to recover状态.

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

  • 你们可以找另一个帖子互相婊子吗? (2认同)

Nas*_*loo 2

我认为最好创建一个公共项目(或ApplicationFramework项目)并将异常公共对象放在上面。

拥有一个包含类基类的 ApplicationFramework始终是一个好主意(特别是在 UI - PageBase - MasterBase - ModuleBase 等中)

显然,您必须将类和枚举放入BLL项目中。

请注意,3 层并不意味着3 个项目。您的 BLL 中可以有 5 个项目。

最后不要忘记使用ELMAH或任何其他类似的工具。