有没有办法在 Lotus Notes 中有一个全局(到文档)错误处理程序?
Is there a way in lotus notes to have a global (to a document) error handler?
我继承了一个 Lotus Notes 应用程序,真正让我烦恼的一件事是每个 function/sub/property 都有 onerror 语句和错误处理程序标签,除了拼写错误外,它们都做完全相同的事情。此外,不幸的是,这个应用程序经历了几次修订和一些错误处理程序:标签有修订,而其他没有。我想标准化和集中这种行为。
有没有办法为给定的文档设置一个错误处理程序,如果文档中的任何地方出现错误,就会调用该特定的错误处理程序?
谢谢,
每次脚本执行您可以有一个错误处理程序。你不能对一个文件有一个全局。文档中触发的每个事件都会导致执行新的脚本。
也就是说,每个函数有一个错误处理程序通常是有利的,但如果它们实际上完全相同,那么这种优势就失去了。更好的做法是自定义它们,以便每个错误处理程序记录当前函数的名称。 (当然,由于 copy/paste 懒惰,这往往在理论上比在实践中更有效。)
如果您有一个 On Error Goto SomeLabel
语句(其中 SomeLabel
是代码实际使用的任何标签),该标签必须存在于包含该语句的同一 Sub/Function 中,因此,从技术上讲,每个 Sub/Function.
都需要一个单独的处理程序
然而,有些事情可能会简化事情...
如果一个 Sub/Function 调用另一个 Sub/Function,并且内部的没有错误处理程序但外部的(调用者)有,那么内部的错误 Sub/Function 将被调用者中的处理程序捕获。
此设置为您提供的信息较少(您无法在内部 Sub/Function 中获取发生错误的行号),但如果您确定有任何 Subs/Functions 可能会有所帮助不能产生错误,或只有一行可能发生错误。
如果您有一些在许多错误处理程序中相同的静态 message-text 或日志记录,您可以在 Form Globals 中使用 Sub/Function(或在脚本库中以绝对减少代码重复)它包含错误处理程序的静态部分,并为可变部分(错误消息、行号和 Sub/Function 名称)提供参数。
最后,此代码将生成当前 Sub/Function 的名称,并且可以更轻松地在许多地方使用相同的错误处理程序,只要代码声明包含 %include "lsconst.lss"
或者您使用包含相同 %include
语句的脚本库:
GetThreadInfo(LSI_THREAD_PROC)
另一个函数 LSI_Info
也可以为您提供当前 Sub/Function 的名称,但 IBM 不支持,应避免使用。
我继承了一个 Lotus Notes 应用程序,真正让我烦恼的一件事是每个 function/sub/property 都有 onerror 语句和错误处理程序标签,除了拼写错误外,它们都做完全相同的事情。此外,不幸的是,这个应用程序经历了几次修订和一些错误处理程序:标签有修订,而其他没有。我想标准化和集中这种行为。
有没有办法为给定的文档设置一个错误处理程序,如果文档中的任何地方出现错误,就会调用该特定的错误处理程序?
谢谢,
每次脚本执行您可以有一个错误处理程序。你不能对一个文件有一个全局。文档中触发的每个事件都会导致执行新的脚本。
也就是说,每个函数有一个错误处理程序通常是有利的,但如果它们实际上完全相同,那么这种优势就失去了。更好的做法是自定义它们,以便每个错误处理程序记录当前函数的名称。 (当然,由于 copy/paste 懒惰,这往往在理论上比在实践中更有效。)
如果您有一个 On Error Goto SomeLabel
语句(其中 SomeLabel
是代码实际使用的任何标签),该标签必须存在于包含该语句的同一 Sub/Function 中,因此,从技术上讲,每个 Sub/Function.
然而,有些事情可能会简化事情...
如果一个 Sub/Function 调用另一个 Sub/Function,并且内部的没有错误处理程序但外部的(调用者)有,那么内部的错误 Sub/Function 将被调用者中的处理程序捕获。
此设置为您提供的信息较少(您无法在内部 Sub/Function 中获取发生错误的行号),但如果您确定有任何 Subs/Functions 可能会有所帮助不能产生错误,或只有一行可能发生错误。
如果您有一些在许多错误处理程序中相同的静态 message-text 或日志记录,您可以在 Form Globals 中使用 Sub/Function(或在脚本库中以绝对减少代码重复)它包含错误处理程序的静态部分,并为可变部分(错误消息、行号和 Sub/Function 名称)提供参数。
最后,此代码将生成当前 Sub/Function 的名称,并且可以更轻松地在许多地方使用相同的错误处理程序,只要代码声明包含 %include "lsconst.lss"
或者您使用包含相同 %include
语句的脚本库:
GetThreadInfo(LSI_THREAD_PROC)
另一个函数 LSI_Info
也可以为您提供当前 Sub/Function 的名称,但 IBM 不支持,应避免使用。