系统.调用方法时的ArgumentOutOfRangeException.我如何找出错误发生的地方?

本文关键字:错误 何找出 方法 调用 ArgumentOutOfRangeException 系统 | 更新日期: 2023-09-27 18:11:28

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

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

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

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

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

系统.调用方法时的ArgumentOutOfRangeException.我如何找出错误发生的地方?

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

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

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

给定一个方法Main,它调用a,调用B,调用C(抛出异常)堆栈跟踪看起来像这样:

/*
    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
*/