【发布时间】:2013-10-30 00:41:43
【问题描述】:
这是我在 vb.net 上的第一个项目,我现在正在努力将 vba 工作插件迁移到 vb.net COM 插件。我想我有点明白了,但错误处理让我受阻。
这是我一直用来了解 try-catch 以及如何将异常传递给调用者的测试
Public Sub test()
Dim ActWkSh As Excel.Worksheet
Dim ActRng As Excel.Range
Dim ActCll As Excel.Range
Dim sVar01 As String
Dim iVar01 As Integer
Dim sVar02 As String
Dim iVar02 As Integer
Dim objVar01 As Object
ActWkSh = Me.Application.ActiveSheet
ActRng = Me.Application.Selection
ActCll = Me.Application.ActiveCell
iVar01 = iVar02 = 1
sVar01 = CStr(ActCll.Value)
sVar02 = CStr(ActCll.Offset(1, 0).Value)
Try
objVar01 = GetValuesV(sVar01, sVar02)
'DO SOMETHING HERE
Catch ex As Exception
MsgBox("ERROR: " + ex.Message)
'LOG ERROR SOMEWHERE
Finally
MsgBox("DONE!")
End Try
End Sub
Private Function GetValuesV(ByVal QryStr As Object, ByVal qryConn As String) As Object
Dim cnn As Object
Dim rs As Object
Try
cnn = CreateObject("ADODB.Connection")
cnn.Open(qryConn)
rs = CreateObject("ADODB.recordset")
rs = cnn.Execute(QryStr)
If rs.EOF = False Then
GetValuesV = rs.GetRows
Else
Throw New System.Exception("Query Return Empty Set")
End If
Catch ex As Exception
Throw ex
Finally
rs.Close()
cnn.Close()
End Try
End Function
我想测试错误信息,但是 MsgBox("错误:" + ex.Message) 弹出一些意想不到的东西(对象变量或未设置块变量) 我在这里做错了什么? 谢谢 D
【问题讨论】:
-
您期待什么错误?你想捕捉什么(错误的)行为?
-
打开 CLR 异常 - 调试 -> 异常并检查公共语言运行时异常(抛出)。这应该会在错误处中断。
-
我的想法是在消息框中获取完整的错误消息,以便可以将其记录在文件(或工作表)中。错误是我没有收到自定义错误或由连接字符串中的语法错误查询或拼写错误触发的任何其他错误。我得到了“对象变量..”的东西。
-
@pm_2:不需要。我确定错误已被正确捕获。但是错误消息没有返回我期望的错误,而是这个“对象变量..”的东西。
-
即每当我故意使用错误的查询语句时,我希望错误消息是“错误:您的 SQL 语法有错误...”行中的内容,但我得到“错误:对象变量...”
标签: vb.net error-handling