try..catch中的循环

时间:2011-02-16 20:16:10

标签: vb.net loops try-catch

好的,我有一个try..catch这样:

Try   
  Dim dr As OleDbDataReader = performSelect("SELECT * FROM " & table, myConn)
Catch ex As Exception
  sheet = InputBox("Re-enter table:")
  Dim dr As OleDbDataReader = performSelect("SELECT * FROM " & table, myConn)
End Try

以上内容仅适用于第一个实例。 我想要做的是继续显示输入框,直到dr成功(即已从数据库中检索到值。

我知道我需要一些时间,但我不确定如何继续

4 个答案:

答案 0 :(得分:2)

从catch块中删除performSelect,否则你也可以在那里抛出异常并且需要捕获等等。将整个try catch块放在while循环中,当你有一个sheet值时退出。

答案 1 :(得分:2)

看看here为什么这不是一个好主意。

如果您仍然感兴趣,可以试试这个:

   Dim retries As Integer = 3
   While True
       Try
           Dim sheet as String = InputBox("Enter table:")
           Dim dr As OleDbDataReader = performSelect("SELECT * FROM " & sheet, myConn)
           Exit While
       Catch
           retries -= 1
           If retries = 0 Then
               Throw
           Else
               System.Threading.Thread.Sleep(1000)
           End If
       End Try
   End While

如果您想要更多(无限 - >< = 0),请更改重试次数,如果您想立即重试,请更改或删除thread.sleep。

答案 2 :(得分:1)

这可能有效:

    Dim inputOk As Boolean = False

    Do Until inputOk = True
        Try
            Dim dr As OleDbDataReader = performSelect("SELECT * FROM " & table, myConn)
            inputOk = True
        Catch ex As Exception
            sheet = InputBox("Re-enter table:")

        End Try
        End
    Loop

答案 3 :(得分:0)

Catch块设计用于处理异常,而不是执行数据库查询......您应该使用Jeff的方式。我正在写作,但他比我快。