我有一个vb.net程序,可访问10个不同的数据库以进行报告。我在程序结束时使用“Try”语句,通过电子邮件从数据集发送我使用LINQ构建的数据。
我遇到的问题是当我尝试连接到脱机的数据库,或者超时程序锁定或结束时。我想做的是类似于“On error resume Next”,但是,我不能用程序中的try语句做到这一点......有什么建议吗?
答案 0 :(得分:3)
在vb.net下面的错误恢复;
Try
something()
Catch ex As Exception
'do nothing
End Try
如果这是一个长期代码/生产代码
,请尝试找到更好的方法来处理此问题答案 1 :(得分:0)
在stackoverflow上查看此答案。它在C#中
基本上它是一个处理顶层异常的表达式。
但是,您必须确保使用它包装每个可能的代码块,因为异常是结构化的。
答案 2 :(得分:0)
从一个单独的函数调用您的数据库,该函数在成功与否时返回一个布尔值。像这样:
Protected Sub Page_Load(sender As Object, e As EventArgs)
Try
'do something or nothing
If Not OpenConnecttion() Then
End If
Catch generatedExceptionName As Exception
Throw
End Try
End Sub
Private Function OpenConnecttion() As Boolean
'do you database conenction and maybe retrieval stuff here
Try
Catch ex As Exception
Return False
End Try
Return True
End Function
答案 3 :(得分:0)
虽然Fredou的答案在技术上是正确的,但我建议您稍微重新调整您的程序。而不是
On Error Resume Next
Dim db1 = OpenDbConnection() ' fails
...do something with db1... ' more errors, failing silently, occur here
确保只允许打开数据库的操作失败:
Dim db1 As OleDbConnection ' or whatever DB library you happen to use
Try
db1 = OpenDbConnection()
Catch ex As Exception
Console.WriteLine("Skipping DB1: " & ex.ToString())
End Try
If db1 IsNot Nothing
...do something with db1... ' Errors occuring here *are* reported
End If
这样,您只会忽略代码中某些明确定义的部分中的错误。