【问题标题】:Get info of Exception details获取异常详细信息
【发布时间】:2016-02-04 20:39:31
【问题描述】:

我想写异常的方法名、类名、文件名、行号。我怎样才能做到这一点?我尝试了下面的代码,将Exception 传递给在文本文件中写入msg 的函数。

string msg = "";
StackTrace st = new StackTrace(ex);
var frame=st.GetFrame(0);           
msg = @"Message : " + ex.Message + " \n FileName: " + frame.GetFileName() + " \n Method Name : " + frame.GetMethod() + "\n Line Number : " + frame.GetFileLineNumber()+"\n Class Name :"+frame.GetMethod().DeclaringType;

日志写入文件如下

 Message: Message : Attempted to divide by zero. 
 FileName:  
 Method Name : Void Page_Load(System.Object, System.EventArgs)
 Line Number : 0
 Class Name :RequestsView

为什么FileName 丢失并且LineNumber 显示为0,即使它出现在页面的另一行。如果有,请在代码中提出更正建议。

【问题讨论】:

标签: c# exception


【解决方案1】:

只需使用抛出异常的Exception.StackTrace 属性即可获取所需的所有信息

【讨论】:

    【解决方案2】:

    为什么要重新发明轮子?干燥。 NLog 提供了这个功能以及更多开箱即用的功能。

    【讨论】:

      【解决方案3】:

      使用此行获取您想要的详细信息..

      int lineNumber = new System.Diagnostics.StackTrace(ex,true).GetFrame(0).GetFileLineNumber(); className = new System.Diagnostics.StackTrace(ex, true).GetFrame(0).GetFileName(); methodName = new System.Diagnostics.StackTrace(ex,true).GetFrame(0).GetMethod().Name;

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-31
        • 1970-01-01
        • 1970-01-01
        • 2016-08-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多