寻找有关在多层应用程序中管理错误代码和消息的建议/最佳做法。特别是:
更新重要提一下,我不能仅仅依赖异常和自定义异常类型来进行错误报告,因为此应用程序的某些客户端将通过Web服务(SOAP&amp; REST)< / p>
欢迎任何建议!
答案 0 :(得分:6)
错误代码是旧的skool,在COM和C编程的旧时代,你需要它们,这些环境不支持异常。如今,您使用例外来通知客户端代码或用户有关问题的信息。 .NET中的异常是自描述的,它们具有类型,消息和诊断。
您需要区分两种类型的异常,即可合理恢复的异常,以及您不知道到底出错的原因或从中恢复的异常。后者是迄今为止最常见的,你需要一个人来采取纠正措施。使用标准的内置.NET异常类型之一来引发它们。 IllegalOperationException,FormatException,ArgumentException是常见的选择。如果它是引发这种异常的后端,那么你只想在不改变的情况下通过它。您通常需要一个finally块来确保内部状态是一致的,有时候一个catch块包含一个简单的throw to recover状态。
您认为可恢复的任何内容都应该使用您自己声明的异常类型引发,派生自Exception类。这使代码上游有机会编写一个catch子句并做一些有意义的事情。您需要生成描述问题的消息,如果上游代码实际上没有处理它,则需要从硬编码字符串或资源中检索消息文本支持本地化。
答案 1 :(得分:2)
我认为最好创建一个Common Project(或ApplicationFramework Project)并将 Exceptions 和 Common Object 放在其上。
拥有一个包含基类的ApplicationFramework(特别是在UI - PageBase - MasterBase- ModuleBase等中)总是一个好主意
显而易见,您必须将您的课程和Enums放在 BLL 项目中。
请注意,3层并不意味着 3项目。您可以在BLL中拥有5个项目。
最后不要忘记使用 ELMAH 或任何其他类似工具。