发布于 2010-04-27 17:50:31
您可以通过在可以抛出的代码周围使用try/catch来打印整个堆栈跟踪,然后使用Console.WriteLine显示异常对象:
try
{
new Program().Run();
}
catch (Exception exception) // Prefer to catch a more specific execption.
{
Console.WriteLine(exception);
}输出:
System.IndexOutOfRangeException: Index was outside the bounds of the array.
at Program.Run() in C:\Console Application1\Program.cs:line 37
at Program.Main(String[] args) in C:\Console Application1\Program.cs:line 45第一行显示异常的类型和消息。第二行显示抛出异常的文件、函数和行号。您还可以在下面的行中看到调用堆栈上其他调用的位置。
您还可以获得文件和行号的未明异常。可以通过在当前的AppDomain.UncaughtException上为AppDomain事件添加一个处理程序来做到这一点:
static void Main(string[] args)
{
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
new Program().Run();
}
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
Console.WriteLine(e.ExceptionObject);
}这显示了与上面类似的输出。
发布于 2010-04-27 17:51:58
Console.WriteLine(exception.StackTrace);确保应用程序处于Debug模式,或包含调试符号( .mdb文件),以便出现行号。
发布于 2010-04-27 17:51:09
您可以通过访问Exception.StackTrace获得堆栈跟踪,这是一个字符串,因此您可以使用Write或WriteLine方法将其打印到控制台。
https://stackoverflow.com/questions/2723607
复制相似问题