引发异常的最佳做法

问题描述 投票:0回答:2

可能重复:
使用NLog记录异常时如何获取堆栈跟踪?

抛出异常以从日志中获得清晰图片的最佳实践是什么?

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

下面是简单的代码:

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

它没有给我一个好的日志记录信息。 我需要诸如功能,错误代码行之类的信息。

c# .net nlog
2个回答
5
投票

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

链接将为您提供有关从通用Exception对象获得的信息

另外, throw exthrow之间也有区别。 而且,当您引发新创建的异常时。

  • 在您的情况下( throw new Exception(ex.Message) ),您将抛出通用异常,该通用异常未说明任何有关异常的性质,并且具有新的stacktrace(从此代码行构建)。
  • throw ex ex-抛出原始异常,但将stacktrace剪切为当前的catch子句

  • throw -重新抛出原始异常与原来的堆栈跟踪,让您登录等异常,让它走得更远

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


0
投票

您可以从http://msdn.microsoft.com/zh-cn/library/system.exception_properties.aspx了解有关抛出异常的最佳实践的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.