有没有办法在 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 不支持,应避免使用。