Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 应用程序日志代码是否应始终位于catch块中_C#_Logging_Exception Handling - Fatal编程技术网

C# 应用程序日志代码是否应始终位于catch块中

C# 应用程序日志代码是否应始终位于catch块中,c#,logging,exception-handling,C#,Logging,Exception Handling,应用程序日志代码是否应始终位于catch块中? 例如,检查try块中的Is object null是否更好,如果是,则记录异常或catch nullreference异常并记录错误(警告)最好在catch块中进行检查,即使仅基于可读性。最好将错误处理与其他代码分开。 首先预防异常总是比事后处理好的做法 如果空引用确实存在,那么代码应该已经测试并适当地处理它 日志应尽可能与异常处理断开连接。实际上,您需要尽可能多地记录日志,然后让您的应用程序记录器决定什么才是真正重要的。(使用错误级别-信息、警告

应用程序日志代码是否应始终位于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块,这取决于您的代码

取决于代码块的上下文,以及日志的确切目的是什么?