当前位置:  开发笔记 > 编程语言 > 正文

在异常处理中显示行号

如何解决《在异常处理中显示行号》经验,为你挑选了2个好方法。

如何显示哪个行号导致错误,这是否可能与.NET编译其.exes的方式有关?

如果没有,Exception.Message是否有自动方式显示被淘汰的子?

try
{
  int x = textbox1.Text;
}
catch(Exception ex)
{
     MessageBox.Show(ex.Message);
}

Steven A. Lo.. 47

使用ex.ToString()得到完整的堆栈跟踪.

您必须使用调试符号(.pdb文件)进行编译,即使在发布模式下也是如此,以获取行号(这是项目构建属性中的一个选项).



1> Steven A. Lo..:

使用ex.ToString()得到完整的堆栈跟踪.

您必须使用调试符号(.pdb文件)进行编译,即使在发布模式下也是如此,以获取行号(这是项目构建属性中的一个选项).



2> Gabriel McAd..:

要查看给定Exception的堆栈跟踪,请使用e.StackTrace

如果您需要更详细的信息,可以使用System.Diagnostics.StackTrace类(这里有一些代码供您试用):

try
{
    throw new Exception();
}
catch (Exception ex)
{
    //Get a StackTrace object for the exception
    StackTrace st = new StackTrace(ex, true);

    //Get the first stack frame
    StackFrame frame = st.GetFrame(0);

    //Get the file name
    string fileName = frame.GetFileName();

    //Get the method name
    string methodName = frame.GetMethod().Name;

    //Get the line number from the stack frame
    int line = frame.GetFileLineNumber();

    //Get the column number
    int col = frame.GetFileColumnNumber();
}

这仅在有可用于程序集的pdb文件时才有效.请参阅项目属性 - 构建选项卡 - 高级 - 调试信息选择以确保存在pdb文件.

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有