使用 LotusScript 进行错误处理 - 继续程序执行
Error Handling With LotusScript - Continue Program Execution
对于如何使用此 LotusScript 片段继续执行程序,我有点迷茫。它从视图中提取所有文档,但是,它命中了包含 'Overflow' 错误的某个文档,该错误会停止程序,而不是忽略它并继续下一个文档。正在打印错误信息,可见代码进入了ErrorHandler,随后结束。
Option Public
Option Declare
Sub Initialize
'init stuff, etc
Set view = db.getView("Main")
Set doc = view.getFirstDocument()
Set lastDoc = view.getLastDocument()
k = 0
While (Not doc is Nothing)
dealId = doc.DealId(0)
If(doc.HasEmbedded) Then
Set body = doc.GetFirstItem("Body")
If(Not body Is Nothing) Then
'code to extract all attachments on a document
End If
End If
nextDoc:
Set doc = view.getNextDocument(doc)
k = k + 1
Wend
Exit Sub
errHandler:
Print "Get error when process document with dealId=" & dealId & " at line " & CStr(Erl) & ". Err=" & CStr(Err) & ", error=" & Error
GoTo nextDoc
'this should continue execution of nextDoc
End Sub
添加一行
On Error GoTo errHandler
在 While 之前并用
替换 Print 之后的行
Resume nextDoc
您的代码可能会导致无限循环。例如,如果视图 "Main" 不可用,行
Set view = db.getView("Main")
会导致错误。执行将跳转到 errHandler 并从那里跳转到 nextDoc。 Set doc = view.getNextDocument(doc)
行也会抛出错误,因为 doc 是 Nothing
。执行将跳转到 errHandler 并从那里跳转到 nextDoc 并且...我们有一个不定式循环。
您可以通过这样的错误处理来避免这种情况:
nextDoc:
Set doc = view.getNextDocument(doc)
k = k + 1
Wend
finito:
Exit Sub
errHandler:
If doc is Nothing then
Print "This is a serious error before while..."
Resume finito
Else
Print "Get error when process document with dealId=..."
Resume nextDoc
End If
End Sub
对于如何使用此 LotusScript 片段继续执行程序,我有点迷茫。它从视图中提取所有文档,但是,它命中了包含 'Overflow' 错误的某个文档,该错误会停止程序,而不是忽略它并继续下一个文档。正在打印错误信息,可见代码进入了ErrorHandler,随后结束。
Option Public
Option Declare
Sub Initialize
'init stuff, etc
Set view = db.getView("Main")
Set doc = view.getFirstDocument()
Set lastDoc = view.getLastDocument()
k = 0
While (Not doc is Nothing)
dealId = doc.DealId(0)
If(doc.HasEmbedded) Then
Set body = doc.GetFirstItem("Body")
If(Not body Is Nothing) Then
'code to extract all attachments on a document
End If
End If
nextDoc:
Set doc = view.getNextDocument(doc)
k = k + 1
Wend
Exit Sub
errHandler:
Print "Get error when process document with dealId=" & dealId & " at line " & CStr(Erl) & ". Err=" & CStr(Err) & ", error=" & Error
GoTo nextDoc
'this should continue execution of nextDoc
End Sub
添加一行
On Error GoTo errHandler
在 While 之前并用
替换 Print 之后的行Resume nextDoc
您的代码可能会导致无限循环。例如,如果视图 "Main" 不可用,行
Set view = db.getView("Main")
会导致错误。执行将跳转到 errHandler 并从那里跳转到 nextDoc。 Set doc = view.getNextDocument(doc)
行也会抛出错误,因为 doc 是 Nothing
。执行将跳转到 errHandler 并从那里跳转到 nextDoc 并且...我们有一个不定式循环。
您可以通过这样的错误处理来避免这种情况:
nextDoc:
Set doc = view.getNextDocument(doc)
k = k + 1
Wend
finito:
Exit Sub
errHandler:
If doc is Nothing then
Print "This is a serious error before while..."
Resume finito
Else
Print "Get error when process document with dealId=..."
Resume nextDoc
End If
End Sub