程序类正在捕获我已经捕获的异常

时间:2014-06-29 04:03:52

标签: c# try-catch

我收到错误

  

InvalidArgument ='4'的值对'index'无效。

Application.Run(new Form1());

Intelletrace接受了我的代码:

        for (int i = 0; i < 20; i++)
        {
            try
            {
                if (dataBase.tagInclude.Count() == 0)
                {
                    commonTags.Add(dataBase.set.Tables["tagTable"].Select("tag like '*'", "count desc")[i]["tag"].ToString());
                }
                else
                {
                    commonTags.Add(dataBase.tagPruneList[i].tag);
                }
            }
            catch (IndexOutOfRangeException)
            {
                break;
            }
            catch (ArgumentOutOfRangeException)
            {
                break;
            }
        }

错误在catch (ArgumentOutOfRangeException)

如果我没有抛出异常,我不明白为什么会这样做。它也刚刚开始这样做,但这段代码已经工作了一段时间,我最近没有改变它。当我对它进行编码以便它不会抛出错误时,它就会使用不同代码行执行相同的操作,而这些代码行的工作时间更长。

我添加的代码似乎非常无害且无关:

    public static void itemChecked(ListViewItem lvi)
    {
        if (supressChecks) return;
        if (!lvi.Checked)
        {
            dataBase.Tag(lvi.Tag.ToString());
        }
        else
        {

        }
    }

此代码唯一不同的做法是使用listviewitem标记而不是textbox.text调用dataBase.Tag()函数。

1 个答案:

答案 0 :(得分:1)

你正在追赶:

IndexOutOfRangeException
ArgumentOutOfRangeException

但是被抛出的是:

 InvalidArgument

...根据你帖子中的信息。它看起来像一个函数期待一个数字,你传递一个字符串或字符串。抓住抛出的异常。