我有一个返回数据表的函数
Private Function _Read() As DataTable
Dim _cmd As New SqlCommand
Dim _da As New SqlDataAdapter(_cmd)
Dim _dt As New DataTable
With _cmd
.Connection = dbRoot
.CommandTimeout = 0
.CommandText = "SELECT * FROM Table "
End With
Try
_da.Fill(_dt)
Return _dt
Catch ex As Exception
Return Nothing
End Try
End Function
现在我想控制错误,所以我把代码放在Try Catch块中。
如何检查我的程序是否发生异常?
我可以像这样设置
IF _Read = nothing ?
答案 0 :(得分:1)
首先,要检查_Read是否返回任何内容,您必须在vb.net中使用Is关键字:
If _Read Is nothing Then
...
End if
但是如果你真的想要"控制是否发生错误"那么你要做的第一件事是应用适当的错误处理。永远不要抓住并忽略异常。 处理异常的一种方法是通过消息框通知用户,记录它。另一个选择是不要在过程中使用Catch,以便将错误传播到堆栈中。
此外,您可能希望使用finally块来关闭和释放资源,或使用using构造。见这里:SqlCommand (Using Statement / Disposing issue)
答案 1 :(得分:0)
尝试以下_Read方法的变体。此方法返回DataTable作为返回类型,并将错误消息作为输出参数返回。我希望这会有所帮助。
ungetch
在代码中将此方法称为
Private Function _Read(ByRef errorMsg As String) As DataTable
Try
'Get data from datrabase
'return datatable
_Read = New Data.DataTable
'return empty if no error occured
errorMsg = ""
Catch ex As Exception
'return null data table
_Read = Nothing
'return error code
errorMsg = ex.Message
End Try
End Function