【问题标题】:Should application logging code always be in catch block应用程序日志记录代码是否应该始终处于 catch 块中
【发布时间】:2011-10-23 04:36:24
【问题描述】:

应用程序日志记录代码是否应该始终处于 catch 块中? 例如检查 try 块中的对象是否为 null 是否更好,如果是则记录异常或捕获 nullreference 异常并记录错误(警告)

【问题讨论】:

  • 取决于代码块的上下文,你不认为日志的预期目的是什么?

标签: c# logging exception-handling


【解决方案1】:
  • 与事后处理异常相比,首先防止异常总是*更好的做法。
  • 如果确实有可能出现空引用,则代码应该已经对此进行了测试并进行了适当的处理。
  • 日志记录应尽可能与异常处理断开连接。确实,您需要尽可能多地记录,然后让您的应用程序记录器决定什么是真正重要的。 (使用错误级别 - 信息、警告、错误)所以是的,你的 catch 块应该记录,但绝对不应该是你记录的唯一地方。

*我确信在某些极端情况下这是不正确的,但这种情况非常罕见。

【讨论】:

    【解决方案2】:

    拥有日志总是很好的,它可以帮助您了解正在发生的事情、应用程序的行为方式、进行适当的跟踪、监控等......但是我认为在哪里拥有它取决于您的应用程序和上下文.确保必须记录异常详细信息,以便您可以检查发生了什么,但是要在 finally 块或其他地方登录 catch 块,这取决于您的代码。

    【讨论】:

      【解决方案3】:

      总是是一个强词,日志代码应该在需要的地方。在大多数情况下,日志记录是有分类的。

      **INFO**: General application information 
      **DEBUG**: Information that may be helpful if trying to debug using the log.
      **ERROR**: Error information.
      

      我确信还有其他类别,但是正如您所看到的,在这 3 个的情况下,错误日志记录可能只会出现在 catch 块中,而其他 2 个确实可以在任何地方。

      【讨论】:

        【解决方案4】:

        最好在 catch 块中这样做,即使仅基于可读性。将错误处理与其他代码分开总是更好。

        【讨论】:

          【解决方案5】:

          我认为日志记录是一个跨领域的问题,所以我将它放在一个方面。您拥有的 catch 块越多,您必须编写的日志记录代码就越多。如果您可以将建议编织到异常中,您可以编写一次日志记录代码并将其保存在一个地方。

          【讨论】:

            猜你喜欢
            • 2022-08-19
            • 1970-01-01
            • 1970-01-01
            • 2010-09-20
            • 1970-01-01
            • 1970-01-01
            • 2014-10-01
            • 2010-10-01
            • 2011-03-27
            相关资源
            最近更新 更多