Помощь в обработке исключений - PullRequest
3 голосов
/ 02 декабря 2009

Я написал и протестировал приложение WinForms, и все отлично работает на моей машине (клише, я знаю). Когда я создал проект установки и установил его на компьютере сотрудника, он получает следующее сообщение:

   ************** Exception Text **************
   System.IndexOutOfRangeException: There is no row at position 0.
   at System.Data.RBTree`1.GetNodeByIndex(Int32 userIndex)
   at System.Data.RBTree`1.get_Item(Int32 index)
   at System.Data.DataRowCollection.get_Item(Int32 index)
   at MyApp.MainForm.MainForm_Load(Object sender, EventArgs e)
   at System.Windows.Forms.Form.OnLoad(EventArgs e)
   at System.Windows.Forms.Form.OnCreateControl()
   at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
   at System.Windows.Forms.Control.CreateControl()
   at System.Windows.Forms.Control.WmShowWindow(Message& m)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
   at System.Windows.Forms.ContainerControl.WndProc(Message& m)
   at System.Windows.Forms.Form.WmShowWindow(Message& m)
   at System.Windows.Forms.Form.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

Я признаю, что я новичок, когда дело доходит до обработки исключений, подобных этому. Этот текст не имеет большого смысла для меня, и я не уверен, что это лучший способ отладки, так как я не могу получить ошибку на моей машине.

Может кто-нибудь сказать, в чем проблема, или посоветовать мне лучший способ отладки этого? Любая помощь с благодарностью!

Ответы [ 4 ]

6 голосов
/ 02 декабря 2009

Очевидно, вы используете объект DataRowCollection в основном обработчике событий загрузки формы, и этот объект DataRowCollection пуст (т.е. не содержит строк). Кажется, что обработчик события загрузки формы предполагает, что он будет , а не пустым.

Я предлагаю вам установить точку останова (F9) на открывающей скобке MainForm_Load и шагать (F10 или F11) по своему коду, пока вы не найдете, где код пытается использовать DataRowCollection.

3 голосов
/ 02 декабря 2009

Visual Studio имеет очень удобную функцию удаленной отладки. Если вы запустите удаленный узел отладки на компьютере коллеги, вы сможете подключиться к этому запущенному процессу из среды IDE на своем компьютере. Я использовал это пару раз с очень хорошими результатами.

http://msdn.microsoft.com/en-us/library/y7f5zaaa(VS.71).aspx

1 голос
/ 02 декабря 2009

Вы создаете коллекцию строк данных и получаете доступ к ней с помощью collection[0] без проверки, если у нее есть хотя бы один элемент для начала. Возможно, ваша coleague подключается к пустому хранилищу данных, в котором нет строк?

1 голос
/ 02 декабря 2009

Похоже на разницу в данных - вы пытаетесь получить доступ к узлу в дереве по индексу, который не существует ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...