调用Method时出现System.ArgumentOutOfRangeException。如何找出错误发生的位置?

时间:2016-10-03 12:29:26

标签: c# visual-studio runtime-error

我使用Windows窗体设计器设计了一个程序,并添加了在按某个按钮时执行的功能。执行我的程序并单击所述按钮后,我收到以下错误:

  

类型'System.ArgumentOutOfRangeException'的未处理异常   发生在mscorlib.dll中        附加信息:指数超出范围。必须是非负数且小于集合的大小。

奇怪的是它告诉我在调用方法时发生了错误;如:

private void btPPTX_Click(object sender, EventArgs e)
{
    PptxConverter.Generate();
}

之前我遇到了同样的错误,但它向​​我显示了它发生的确切行(Generate-Method内部)。我纠正了我的错误,但现在我甚至不知道从哪里开始寻找。 Generate-Method非常广泛,涉及一整套其他方法,因此很难找到错误或在此处发布整个代码。 是否有任何有效的方法可以找到错误,或者我必须逐行查看代码?
我正在使用Visual Studio Community 2015

1 个答案:

答案 0 :(得分:1)

StackTrace是您在方法图(嵌套调用)中调查异常的方法之一:

try
{
   PptxConverter.Generate();
}
catch(Exception ex)
{
   Console.WriteLine(ex);
}

当您打印异常对象时,您将获得异常消息和堆栈跟踪,这是一个详细的调用层次结构,它引导您到达抛出最后一个异常的确切方法(有时使用行号)。

给定一个调用A的方法Main调用调用C的B(抛出异常)Stack-trace如下所示:

/*
    System.Exception: Some Error Message
    at ProjectName.Program.C() in C:\Users\User\Documents\Visual Studio 2015\Proj
ects\ProjectName\ProjectName\Program.cs:line 87
    at ProjectName.Program.B() in C:\Users\User\Documents\Visual Studio 2015\Proj
ects\ProjectName\ProjectName\Program.cs:line 82
    at ProjectName.Program.A() in C:\Users\User\Documents\Visual Studio 2015\Proj
ects\ProjectName\ProjectName\Program.cs:line 77
    at ConsoleTest.Program.Main(String[] args) in C:\Users\User\Documents\Visual
Studio 2015\Projects\ProjectName\ProjectName\Program.cs:line 52
*/