首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >异常处理--出现错误的显示行号?

异常处理--出现错误的显示行号?
EN

Stack Overflow用户
提问于 2010-04-27 17:48:08
回答 4查看 36.9K关注 0票数 11

可能重复: 在异常处理中显示行号

请有人告诉我如何获得发生错误的代码的行号,并将其显示在控制台上。

其他信息,如文件名或方法名,将非常方便。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-04-27 17:50:31

您可以通过在可以抛出的代码周围使用try/catch来打印整个堆栈跟踪,然后使用Console.WriteLine显示异常对象:

代码语言:javascript
复制
try
{
    new Program().Run();
}
catch (Exception exception)   // Prefer to catch a more specific execption.
{
    Console.WriteLine(exception);
}

输出:

代码语言:javascript
复制
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事件添加一个处理程序来做到这一点:

代码语言:javascript
复制
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);
}

这显示了与上面类似的输出。

票数 10
EN

Stack Overflow用户

发布于 2010-04-27 17:51:58

代码语言:javascript
复制
Console.WriteLine(exception.StackTrace);

确保应用程序处于Debug模式,或包含调试符号( .mdb文件),以便出现行号。

票数 5
EN

Stack Overflow用户

发布于 2010-04-27 17:51:09

您可以通过访问Exception.StackTrace获得堆栈跟踪,这是一个字符串,因此您可以使用WriteWriteLine方法将其打印到控制台。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2723607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档