【问题标题】:Is there a C# method to return same data at any point in execution as Exception.ToString() [duplicate]是否有 C# 方法在执行的任何时候返回与 Exception.ToString() 相同的数据 [重复]
【发布时间】:2021-08-26 13:30:41
【问题描述】:

我想在记录器中记录代码的当前位置,并使用与异常相同的详细信息,例如:

   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
   at System.Data.SqlClient.SqlDataReader.get_MetaData()

有什么方法可以解决这个问题,还是最好还是抛出一个异常然后用trycatch处理它?

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    看看System.Diagnostics.StackTrace

    从日志记录方法中,您还可以执行此操作来查找调用您的日志记录函数的方法的名称:

    (new StackFrame(1)).GetMethod().Name
    

    该代码中的“1”表示先前堆栈帧:调用此函数的方法。 “0”将是当前条目。还要小心内联。

    最后,由于这是为asp.net 标记的,我需要谈谈异步。现代 ASP.Net Core 中的异步编码风格可以对您的堆栈跟踪造成各种破坏。请注意,当您查看这些内容时,情况可能与您预期的不同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-04
      • 2018-01-28
      • 2016-01-15
      • 2011-02-17
      • 2021-03-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多