可能的重复:
在异常处理中显示行号
有人可以告诉我如何获取发生错误的代码的行号并将其显示到控制台吗?
其他信息(例如文件名或方法名称)将非常方便。
如果您需要文件和行号,则无需解析 StackTrace 字符串。您可以使用 System.Diagnostics.StackTrace 从异常创建堆栈跟踪,这样您就可以枚举堆栈帧并获取引发异常的文件名、行号和列。这是一个关于如何执行此操作的快速而简单的示例。不包括错误检查。为此,PDB 需要与调试符号一起存在,默认情况下是使用调试构建创建的。
using System;
using System.Diagnostics;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
try
{
TestFunction();
}
catch (Exception ex)
{
StackTrace st = new StackTrace(ex, true);
StackFrame[] frames = st.GetFrames();
// Iterate over the frames extracting the information you need
foreach (StackFrame frame in frames)
{
Console.WriteLine("{0}:{1}({2},{3})", frame.GetFileName(), frame.GetMethod().Name, frame.GetFileLineNumber(), frame.GetFileColumnNumber());
}
}
Console.ReadKey();
}
static void TestFunction()
{
throw new InvalidOperationException();
}
}
}
上面代码的输出如下所示
D:\Source\NGTests\ConsoleApplication1\Program.cs:TestFunction(30,7)
D:\Source\NGTests\ConsoleApplication1\Program.cs:Main(11,9)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)