获取异常详细信息

时间:2012-12-17 12:11:49

标签: c# exception

我想编写例外的methodname,classname,filename,linenumber。我怎样才能实现这个目标?我尝试了以下代码,将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,即使它出现在页面的另一行。如果有的话,请在代码中建议更正。

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

为什么要尝试重新发明轮子?干。 NLog提供了这项功能,而且开箱即用。

答案 2 :(得分:0)

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

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;