Lotus Notes" MAILDOC类型不匹配"调试时出错

时间:2014-11-16 18:47:47

标签: lotus-notes lotusscript lotus lotus-formula

我在Lotus Notes中有一个应用程序,我在调试时遇到一个常量错误,但它没有在那里停止,因为错误与任何特定操作无关。每当打开应用程序数据库并单击Debug Lotusscript然后单击特定视图的任何内容时,我都会收到有关MAILDOC类型不匹配的错误!我已经浏览了那个特定的视图,但无法准确找到类型不匹配的位置。我检查了MAILDOC的类型,并将其声明为NotesDocument。任何人都可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

要调试与视图关联的代码,必须在打开视图之前启用调试器。 我不得不怀疑,如果你不能调试找到这条线,你怎么知道错误与MAILDOC有关。听起来你必须已经在应用程序中有代码来捕获错误并显示其他信息,但是捕获错误的功能并没有显示足够的信息来定位问题 - 例如它不显示功能名称或行号。

另请注意,如果您依赖LotusScript调试器自动停在错误行上,如果您的代码捕获错误并显示消息,则不会发生这种情况。您需要单步执行代码才能找到错误行。

我强烈建议您将错误捕获代码放入所有LotusScript模块中。这涉及在每个模块的开头和结尾插入某些行,如下所示:

' FUNCTION IN A CLASS
    On Error Goto oops
    ' ...
    Exit Function
oops:
    Error Err, Error & { //} & TypeName(Me) & {.} & GetThreadInfo(1) & {:} & Erl & (Erl-Getthreadinfo(0))

' SUB IN A CLASS
    On Error Goto oops
    ' ...
    Exit Sub
oops:
    Error Err, Error & { //} & TypeName(Me) & {.} & GetThreadInfo(1) & {:} & Erl & (Erl-Getthreadinfo(0))

' CLASS PROPERTY
    On Error Goto oops
    ' ...
    Exit Property
oops:
    Error Err, Error & { //} & TypeName(Me) & {.} & GetThreadInfo(1) & {:} & Erl & (Erl-Getthreadinfo(0))

' SIMPLE SUB
    On Error Goto oops
    ' ...
    Exit Sub
oops:
    Error Err, Error & { //}& GetThreadInfo(1) & {:} & Erl

' SIMPLE FUNCTION
    On Error Goto oops
    ' ...
    Exit Function
oops:
    Error Err, Error & { //}& GetThreadInfo(1) & {:} & Erl

如果你不使用面向对象的LotusScript,你只需要最后两个用于简单的函数和subs。 " ..."是你放置函数的现有代码的地方。例如,如果你的功能是:

Function Invert(x) As Long
   Invert = -x
End Function

然后你会写:

 Function Invert(x) As Long
     On Error Goto oops
     Invert = -x
     Exit Function
oops:
    Error Err, Error & { //}& GetThreadInfo(1) & {:} & Erl
 End Function

如果你一直这样做,那么每当你收到错误时,该消息将包含带有函数名和行号的完整错误堆栈,这样可以很容易地找出问题所在。

答案 1 :(得分:0)

有时候,当我遇到一个很难找到的错误时,我所做的就是从所有设计元素中生成一个“Design Sinopsys”。然后,查找单词“MAILDOC”(以及产生错误的行)非常简单。