0

我正在努力解决我的应用程序出现的错误。基本上我在尝试从 SQLite 查询填充数据集时遇到随机错误。我可以处理这样一个事实,即它可能并不总是从 SQLite DB 返回结果,因为表可能被锁定等,但我的代码一直失败并且我无法捕获错误:

我的代码如下所示:

            Dim ExQry As New SQLiteCommand(QryString, SQLConnect)
            ExQry.CommandType = CommandType.Text

            Dim da As New SQLiteDataAdapter(ExQry)
            dasSpice.Clear()

            Try
                da.Fill(dasSpice, "Calls") 'Error occurs on this line
            Catch ex As SQLiteException

基本上发生的事情是我的代码将到达 da.fill(dasSpice, "Calls") 语句并引发错误:

System.Data.SQLite.dll 中出现“System.Runtime.InteropServices.SEHException”类型的第一次机会异常

但是,这个错误没有在 catch 语句中捕获,而是我的代码将直接跳到 cell_formatting 事件并尝试用空数据填充我的 gridview。我的 form_load 事件的一部分是关闭并填充 dasSpice 数据集,然后返回以填充另一个数据集并最终更新 gridview。但是,因为它在 dasSpice 数据集上爆炸了,所以它永远不会返回填充第二个数据集,因此给了我一个空的 gridview。

无论如何我可以捕捉到这个错误,或者让我的代码返回到 form_load 事件以继续处理其余的代码?如果需要,我可以提供更多细节。

任何帮助将不胜感激,因为我对此完全不知所措。谢谢

4

2 回答 2

0

您必须从中正确捕获异常或基类:

Try
   ...
Catch ex As SQLiteException 'will handle all SQLiteException (and subclasses not explicitly specified)
   ...
Catch ex As System.Runtime.InteropServices.SEHException 'Catch all SEHException
   ...
Catch ex As ... 'Catch another exception
   ...
Catch ex As Exception 'Catch all remaining exceptions.
   ...
End Try

请参阅Try/Catch 块

于 2013-09-17T10:01:01.820 回答
0

您正在通过引发的异常捕获 SqlLiteException 是 SEHException。

尝试这个:

Catch ex As Exception

  If TypeOf ex Is SQLiteException Then
    ..  ... blah
  Else
    ' ... not a SQLiteException so do something else...
  End if

然后在 .... bits 中查看异常,看看你能找到什么信息。你应该如何诊断错误 SEHException - External component has throw an exception

您的查询中还有什么?

于 2013-09-17T08:06:27.800 回答