Попробуйте поймать в цикле While

У меня есть база данных SQLite, из которой я хочу читать записи и выполнять фрагмент кода для каждой записи.

Я использую цикл While с Try Catch ВНУТРИ...

Код выглядит следующим образом: -

            result = slcom.ExecuteReader()
            'TODO: There is a problem with this while loop whereby if an ex is caught the connection
            '      to the database is closed.
            While result.Read
                Try

                       < do some stuff here >

                Catch ex As Exception
                    incrementFailoverCount(result("fid"))
                End Try
            End While
            result.Close()

Проблема в том, что после входа в блок Try и перехвата ex следующая итерация цикла while завершится неудачно, поскольку кажется, что в ту минуту, когда ex перехватывается, соединение с базой данных SQLite закрывается, хотя в свойствах соединения указано, что оно открыт.

Любые идеи ???


person general exception    schedule 14.02.2011    source источник
comment
Что такое фактическое исключение?   -  person Mitch Wheat    schedule 14.02.2011
comment
В первый раз, когда код входит в цикл, все в порядке. Затем, когда вызывается исключение, в следующий раз цикл while result.Read выдает ошибку «Соединение было закрыто, оператор был завершен».   -  person general exception    schedule 14.02.2011
comment
Отсортировал его сейчас, предварительно загрузив данные в DataTable.   -  person general exception    schedule 14.02.2011


Ответы (1)


Вы можете переместить весь код в Try Catch в функцию, которая возвращает логическое значение и принимает аргумент ByRef в качестве результата функции.

Это значение, возвращаемое функцией, служило индикатором успешной или неудачной операции, т. е. возбуждалось исключение или нет.

person Predator    schedule 27.03.2011