让你的代码输出exception发生时所在的文件名, 行号, 列号
代码如下:
try { //Your Code Here } catch (Exception ex) { Console.WriteLine(ex.Message); System.Diagnostics.StackTrace trace = new System.Diagnostics.StackTrace(ex, true); Console.WriteLine( trace.GetFrame(trace.FrameCount - 1).GetMethod().Name); Console.WriteLine( trace.GetFrame(trace.FrameCount - 1).GetFileLineNumber()); Console.WriteLine( trace.GetFrame(trace.FrameCount - 1).GetFileColumnNumber()); }
简单一点的, 可以使用Exception.ToString().
ex.ToString()的样例输出:
System.InvalidCastException: Unable to cast object of type 'Microsoft.SharePoint.SPList' to type 'Microsoft.SharePoint.SPDocumentLibrary'.
at GetFolderLength.Program.Main(String[] args) in E:\code\csharp\project1\Program.cs:line 110
System.AppDomain.CurrentDomain.BaseDirectory.ToString()的结果如下:
E:\code\csharp\project1\bin\Debug\
参考资料:
Getting line numbers in exception stack trace in a Windows Service
http://dnchannel.blogspot.com/2007/09/getting-line-numbers-in-exception-stack.html
System.Diagnostics.StackTrace or System.Diagnostics.StackFrame for debugging ? Why
Caveats about System.Diagnostics.StackTrace
http://blogs.msdn.com/jmstall/archive/2005/03/20/399287.aspx