【问题标题】:should the error be logged when we are intentionally raising exception当我们故意引发异常时是否应该记录错误
【发布时间】:2014-12-11 06:22:13
【问题描述】:

我做了一个自定义异常,所以我的问题是我是否应该在错误被引发之前记录它。

class MyException(Exception):
    pass


if not someList:
    # do I need to log here
    logger.error("something went wrong")
    raise MyException("Something wrong.")

【问题讨论】:

  • 看你的意图,没有好的绝对回应。你在编码异常处理吗?如果是,您可能希望在处理异常的处理程序级别记录,如果不是,异常跟踪将包含对引发异常的点的引用,以允许您跟踪失败。无论如何,在任何情况下,都要注意在异常消息中提供一个良好而完整的错误描述。
  • 但我仍在等待一个完美的答案,也许还有更多的解释。

标签: python exception logging


【解决方案1】:

请在 where to log errors - where i throw or where i catch 上查看这个基于意见的问题。它适用于任何语言的异常/错误处理。

一般来说,这个想法是只记录一次错误 -

  • 为了避免更多的 IO 操作,
  • 不会在没有任何附加价值的情况下增加您的代码大小。
  • 如果您在错误源处记录它,跟踪会变得很困难(只有错误消息而没有堆栈跟踪) - 很难找到收到异常的调用者。

在这种情况下,这取决于您是在某处捕获异常还是直接抛出异常。

您可以看到上述问题已结束,并附注说明它是基于意见的。因此,它更多的是您的意见和您的用例,而不是严格的约定。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-11
    • 2010-11-19
    • 1970-01-01
    • 2013-01-23
    • 2019-11-04
    • 2013-03-08
    • 2010-09-10
    相关资源
    最近更新 更多