我想在错误处理程序中捕获错误消息,并在if条件中使用它:
errorhandler:
Print "Error in function TriggerMail -- " & Cstr(Error) & " -- occured at line - " & Cstr(Erl())
MsgBox CStr(Error)
If CStr(Error) = "Unable to send mail, no match found in Name & Address Book(s)" Then
curdoc.Flag = " Invalid Short name"
Call curdoc.Save(False, True)
end if
我正在使用cstr(错误),我得到并且正在验证......虽然我的'If'条件为真,但它正在跳过这个条件。
请纠正我并告诉我一些替代方法。
尝试使用错误编号仍然无法进入if循环
Call doc.Send(False, False)
If Str(Err) = "4294" Then
curdoc.Flag = " Invalid Short name"
curdoc.defaulterSLACount = CInt(defaultCount)
Call curdoc.Save(False, True)
Else
''---------------------------------------------------------------------------------------------------------------
' Flags set in the week doc of the defaulter for reference
'curdoc.Flag = "Mail Sent Successfully"
curdoc.SentTo = doc.sendTo
curdoc.CopiedTo = doc.CopyTo
curdoc.SentOn = Cstr(Now)
curdoc.defaulterSLACount = Cint(defaultCount)
Call curdoc.Save(False, True)
End If
Else
curdoc.Flag = "Mail Not Sent"
curdoc.defaulterSLACount = Cint(defaultCount)
Call curdoc.Save(False, True)
End If ' -------------------- DefaulterCount If Check ends here
Exit Function
errorhandler:
Print "Error in function TriggerMail -- " & Cstr(Error) & " -- occured at line - " & Cstr(Erl())
MsgBox Str(Err)
Resume Next
答案 0 :(得分:1)
我建议您使用 Err
statement 来获取错误编号,而不是使用Error
,而是根据它执行您的操作。
<强>更新强>
您需要在错误处理程序中编写条件If Str(Err) = "4294" Then
。
errorhandler:
If Str(Err) = "4294" Then
curdoc.Flag = " Invalid Short name"
curdoc.defaulterSLACount = CInt(defaultCount)
Call curdoc.Save(False, True)
Else
或者您可以编写代码来专门处理4294
...
...
...
On Error 4294 goto AmbiguousError doc.send(True)
...
...
...
Exit sub
AmbiguousError:
Set namesdb= session.getdatabase(db.server, "names.nsf")
Set Persondoc= namesdb.getview("($Users)").getdocumentbykey(docmail.SendTo(0))
docMail.SendTo = Persondoc.fullname(0) & "@" & Persondoc.MailDomain(0)
Call docMail.Send(True)
Resume next
End sub
以上代码段取自 TechNote 。
答案 1 :(得分:0)
最好使用On Error语句,因为它意味着要使用:
On Error number Goto handler
在功能开始时,您已经可以指定捕获错误的方式。