抛出异常的最佳做法

时间:2012-10-03 01:31:38

标签: c# .net nlog

  

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

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

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

以下是简单的代码:

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

它没有给我一个好的记录消息。我需要信息,如函数,错误代码行。

2 个答案:

答案 0 :(得分:5)

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

这个link将为您提供从通用异常对象

中可以获得的信息

此外,throw exthrow之间存在差异。而且当你抛出新创建的异常时。

  • 在你的情况下(throw new Exception(ex.Message))你抛出了一般性异常,它可以说明异常的本质,并且有新的堆栈跟踪,从这行代码构建。
  • throw ex - 重新抛出原始异常,但将stacktrace切换为当前catch子句

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

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

答案 1 :(得分:0)

您可以阅读更多关于异常抛出的最佳做法 http://msdn.microsoft.com/en-us/library/system.exception_properties.aspx