如何在LotusScript中捕获错误消息

时间:2013-12-02 12:00:55

标签: error-handling lotus-notes lotusscript

我想在错误处理程序中捕获错误消息,并在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

2 个答案:

答案 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

在功能开始时,您已经可以指定捕获错误的方式。