Возникло исключение: System.IndexOutOfRangeException в System.Data.dll
Это то, что я получаю в качестве вывода при отладке моего приложения WPF.Не раз, но больше ничего.
Никаких номеров строк, ни следа стека, ни чего-либо еще, чтобы сказать мне, где это происходит в моем коде. Исходя из того, сколько из них я получаю и когда они происходят, я сильно подозреваю, что это происходит внутри(каждые 10 секунд) TimedEvent в вызове (-ах) на reader.getOrdinal(fieldName)
пошло наперекосяк.
Хотя я бы хотел доказать / опровергнуть это.
Приложение там не умирает, поэтомуу меня создается впечатление, что это происходит внутри блока try / catch / finally ... но ни один из моих блоков catch не выводит подобное сообщение.Если бы это было в одном из моих блоков catch, я бы также ожидал другой вывод, который я не получаю.Я предполагаю, что это может быть не связано с любым моим кодом (отсюда нет стековой трассировки, показывающей обратный вызов), и я просто получаю место на ринге, чтобы увидеть, что что-то идет не так внутри CLR.
Если этоимеет значение, эти вызовы являются попытками чтения данных из древней базы данных MSAccess.Я бы опубликовал код, если бы думал, что он поможет.
Я опытный программист, хотя WPF не является моим основным опытом, и я не встречал исключения, которое дает такую бесполезную отладочную информацию, как эта.Моя цель состоит в том, чтобы понять, что это значит, когда это происходит, и что я могу сделать, чтобы зафиксировать, где.
РЕДАКТИРОВАТЬ:
Обнаружено, что это происходит в блоке try.ПОЧЕМУ он генерирует сообщение для перехваченного исключения?!?
Код следует.
if (t != null && t.CurrentBoard != 0) // If Game isn't Over
{
int cb = t.CurrentBoard;
int cr = t.CurrentRound;
try
{
THIS CALL RIGHT HERE
col = reader.GetOrdinal(cb.ToString()); // exception if current board score doesn't exist
}
catch (IndexOutOfRangeException)
{
col = -1;
}
if (col != -1 && !reader.IsDBNull(col) && reader.GetValue(col) != DBNull.Value)
{
// If a score for the current board has been submitted