【问题标题】:Is it a good practice to log error inside exception constructor?在异常构造函数中记录错误是一种好习惯吗?
【发布时间】:2016-12-11 04:59:36
【问题描述】:

我正在用 C# 开发一个 Web 应用程序,并且我有一个特殊的异常类型,我需要从它的事件中获取完整的日志,当然我会处理它以向用户什么的。

问题是,在异常的构造函数中编写日志代码是一种好习惯吗?我问这个是因为我以前没有见过类似的东西。

提前致谢

【问题讨论】:

  • 否;构造函数不应该有副作用。
  • 我认为不会,因为日志记录本身能够引发异常,因此会变得非常复杂
  • 异常是处理问题的最后一道防线。一旦您将其打开到有可能破坏的代码,这就会违背异常的目的。最好将它们分开。
  • 恕我直言,这违反了单一责任原则。不要那样做。异常应该只负责抛出。
  • 您如何看待这种方式:在本地处理后重新抛出异常,并在全局异常过滤器中捕获和记录?

标签: c# exception logging


【解决方案1】:

一个简短而好的答案应该是:不,你不应该这样,因为你想开发你的代码,关注点分离良好:异常处理不是日志记录,因此,日志记录不能参与构建异常

如果您的代码未处理该异常,您可以使用诸如AppDomain.UnhandledException 事件之类的最后机会异常处理程序并将其记录在那里。

【讨论】:

    猜你喜欢
    • 2019-02-01
    • 2021-04-11
    • 1970-01-01
    • 1970-01-01
    • 2017-10-11
    • 1970-01-01
    • 2012-08-22
    • 2012-08-11
    • 2014-11-05
    相关资源
    最近更新 更多