【问题标题】:Exception handling in class library. Is it necessary?类库中的异常处理。有必要吗?
【发布时间】:2014-09-28 12:59:41
【问题描述】:

我有一个类库项目,我在我的 asp.net 网络表单项目中引用它。

每当发生任何异常时,我都想记录它。但是,我没有在任何类库方法中进行任何异常处理。那就是我没有在类库的任何方法中使用 try-cath 块。

因为,从类库方法抛出的任何异常都会在我的表示层/业务层(无论我在哪里调用类库的函数)中捕获,并且在 Web 表单项目中完成正确的日志记录。

这样做对吗?

【问题讨论】:

  • 是的,这是正确的做法。即使您在库中捕获异常以进行日志记录。登录到用户类后最好扔掉它
  • 通常我会在我的解决方案中创建一个单独的项目,该项目会记录原始项目的每一个异常,因此您可以在所有项目中实现可重用性。
  • 感谢您的回答。嗨wizpert,你能提供更多关于你的观点的细节吗?我有兴趣了解它。或者只是发布一个链接,我可以在其中找到更多信息......谢谢......

标签: asp.net exception-handling code-reuse


【解决方案1】:

这样写是可以的,但在这种情况下,您的类库将抛出异常哪个系统异常消息,这有时可能难以解释和采取相应的行动。

相反,您可以在类库中设置 Try-Catch-Finally 块,并使用用户定义的消息向调用方法重新抛出异常,这将有助于跟踪问题。

例子:

Catch(FileNotFoundException Ex)
{
  throw new ("File Not Found at XYZ Location, Please Check File Exist and retry ...")
}

集中式异常记录:

您可以通过多种方式记录错误消息。一种好方法是使用 Enterprise Library Exception Block 将错误记录到文件中,可用于调试问题。

这篇文章可以为企业库派上用场: http://msdn.microsoft.com/en-us/library/ff649140.aspx

您可以将异常集中记录到 CSV、XML 甚至 Windows 事件查看器。

创建单独的类/项目以执行项目中的所有异常记录。

【讨论】:

    【解决方案2】:

    对我来说似乎是一种合理的方法。将异常日志记录委托给应用程序可以使您的类库保持抽象,这意味着它可以在不依赖于日志记录库/框架的情况下被重用。

    日志记录应该是应用程序的职责,而不是组件的职责。可能有一些特殊情况需要在组件级别进行跟踪级别调试,对于那些具有可以交换的启用日志版本的库的特殊情况可能会派上用场。但是,我认为经过适当测试的组件会减少对它的需求。

    【讨论】:

      猜你喜欢
      • 2012-11-25
      • 2023-04-10
      • 1970-01-01
      • 2014-06-09
      • 2021-11-08
      • 2018-03-23
      • 2011-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多