错误类型错误

时间:2020-07-20 13:35:09

标签: vba ms-access types error-handling

我正在使用static void get_dev_info_service_id_attr(ble_attribute_t * const p_h_attr) { p_h_attr->p_attr = (void *)ble_char_system_id_value; p_h_attr->attr_len = sizeof(ble_char_system_id_value); } 在Access模块​​中进行错误处理,并且在GoTo调用中遇到了type mismatch错误。

我测试了一下Procedures.HandleError是否是一个错误:

err

,而Exit Sub catch: If IsError(err) Then MsgBox "yes" Else MsgBox "no" End If Procedures.HandleError "ctrCreateSubject, frm_OnCreate", err, True End Sub 显示MsgBox,我不知道为什么。我在其他地方使用相同的语法没有问题

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

让我用一个例子来扩展我的评论。

On Error GoTo语句将处理IsError()部分,因为该过程将跳转到catch标签,如果出现错误,将仅跳转到 。因此,如果我们确实跳入错误处理程序,那么我们肯定会有错误。

示例错误处理程序:

Sub Whatever()
    On Error GoTo catch

    'do something

Leave:
    Exit Sub

catch:
    'If we hit this point, then we definitely have an error.
    'At this point, we can query the error number if we want to take action based on the error.
    If Err.Number = xxxx Then
        Msgbox "Error " & xxxx
    End If
    Resume Leave
End Sub

然后,如果要挂起错误处理程序,然后查询是否发生错误,则有另一种方法。

On Error Resume Next

'do something

If Err.Number <> 0
    'An error occurred
End If

然后我们可以确定是否要稍后在我们的方法中再次执行此操作。

Err.Clear

最后,请记住Err是一个全局对象,因此您无需创建实例。有关MSDN的更多信息:Err object