C# 应用程序日志代码是否应始终位于catch块中
应用程序日志代码是否应始终位于catch块中?C# 应用程序日志代码是否应始终位于catch块中,c#,logging,exception-handling,C#,Logging,Exception Handling,应用程序日志代码是否应始终位于catch块中? 例如,检查try块中的Is object null是否更好,如果是,则记录异常或catch nullreference异常并记录错误(警告)最好在catch块中进行检查,即使仅基于可读性。最好将错误处理与其他代码分开。 首先预防异常总是比事后处理好的做法 如果空引用确实存在,那么代码应该已经测试并适当地处理它 日志应尽可能与异常处理断开连接。实际上,您需要尽可能多地记录日志,然后让您的应用程序记录器决定什么才是真正重要的。(使用错误级别-信息、警告
例如,检查try块中的Is object null是否更好,如果是,则记录异常或catch nullreference异常并记录错误(警告)最好在catch块中进行检查,即使仅基于可读性。最好将错误处理与其他代码分开。
- 首先预防异常总是比事后处理好的做法
- 如果空引用确实存在,那么代码应该已经测试并适当地处理它
- 日志应尽可能与异常处理断开连接。实际上,您需要尽可能多地记录日志,然后让您的应用程序记录器决定什么才是真正重要的。(使用错误级别-信息、警告、错误)是的,您的
块应该记录,但这绝对不是您记录的唯一地方catch
*我敢肯定,在某些边缘情况下,这是不正确的,但这是非常罕见的。始终是一个强有力的词,日志代码应该在需要的地方。在大多数情况下,日志记录有不同的类别
**INFO**: General application information
**DEBUG**: Information that may be helpful if trying to debug using the log.
**ERROR**: Error information.
我确信还有其他类别,但正如您所看到的,在这3种情况下,错误日志记录可能只会出现在catch块中,而其他2种日志记录实际上可以出现在任何地方。我认为日志记录是一个交叉关注点,因此我将它放在一个方面。捕获块越多,需要编写的日志代码就越多。如果您可以将建议编织到异常中,那么您可以编写一次日志代码并将其保存在一个位置。拥有日志总是很好的,它将帮助您了解正在发生的事情、应用程序的行为方式、进行适当的跟踪、监视等……但我认为在哪里拥有它取决于您的应用程序和上下文。当然,必须记录异常详细信息,以便您可以检查发生了什么,但要在finally块或其他地方登录catch块,这取决于您的代码 取决于代码块的上下文,以及日志的确切目的是什么?