我正在使用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
,我不知道为什么。我在其他地方使用相同的语法没有问题
有人可以帮忙吗?
答案 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