【问题标题】:Best practice to throw exception [duplicate]抛出异常的最佳实践[重复]
【发布时间】:2012-10-03 01:31:37
【问题描述】:

可能重复:
How to get the Stack trace when logging exceptions with NLog?

抛出异常以从日志中获得清晰图像的最佳做法是什么?

对于日志记录,我使用的是 NLog。

下面是简单的代码:

catch (Exception ex)
{
    logger.Fatal(ex.Message);
    throw new Exception(ex.Message);
}

它没有给我一个好的日志信息。我需要诸如函数、错误代码行之类的信息。

【问题讨论】:

    标签: c# .net nlog


    【解决方案1】:

    出于登录目的,您要分析的不仅仅是异常对象的消息字段。

    link 将为您提供有关您可以从通用异常对象中获得什么的信息

    另外,throw exthrow 之间也有区别。而且当你抛出新创建的异常时。

    • 在您的情况下 (throw new Exception(ex.Message)),您正在抛出通用异常,它没有说明异常的性质并具有新的堆栈跟踪,从这行代码构建。
    • throw ex - 重新抛出原始异常,但将堆栈跟踪剪切到当前的 catch 子句

    • throw - 使用原始堆栈跟踪重新引发原始异常,允许您记录等异常并让它进一步发展

    因此,根据您要实现的目标,这三种情况之一将满足您的需求。

    【讨论】:

      【解决方案2】:

      您可以阅读有关抛出异常的最佳实践的更多信息 http://msdn.microsoft.com/en-us/library/system.exception_properties.aspx

      【讨论】:

      • 请发布相应文章的 sn-p,以便 OP 可以看到确切的位置。
      猜你喜欢
      • 1970-01-01
      • 2021-02-16
      • 2010-09-06
      • 2010-12-02
      • 2011-06-13
      • 1970-01-01
      • 2011-12-24
      • 2011-07-29
      相关资源
      最近更新 更多