0

XPages 应用程序失败并显示以下堆栈跟踪:

com.ibm.jscript.InterpretException: Script interpreter error, line=30, col=43: 'component' is null
at com.ibm.jscript.ASTTree.ASTMember.interpret(ASTMember.java:153)
at com.ibm.jscript.ASTTree.ASTCall.interpret(ASTCall.java:88)
at com.ibm.jscript.ASTTree.ASTBlock.interpret(ASTBlock.java:100)
at com.ibm.jscript.ASTTree.ASTIf.interpret(ASTIf.java:85)
at com.ibm.jscript.ASTTree.ASTBlock.interpret(ASTBlock.java:100)
at com.ibm.jscript.ASTTree.ASTIf.interpret(ASTIf.java:85)
at com.ibm.jscript.ASTTree.ASTBlock.interpret(ASTBlock.java:100)
at com.ibm.jscript.ASTTree.ASTTry.interpret(ASTTry.java:109)
at com.ibm.jscript.ASTTree.ASTIf.interpret(ASTIf.java:85)
at com.ibm.jscript.ASTTree.ASTProgram.interpret(ASTProgram.java:119)
at com.ibm.jscript.ASTTree.ASTProgram.interpretEx(ASTProgram.java:139)

由此我知道,嵌套在块层次结构中的变量“组件”存在问题:if -> try -> { -> if -> { -> if -> { -> 使用无效参数的方法调用。

我不知道到底要寻找什么,搜索“组件”会产生太多结果。

我应该使用什么正则表达式来根据代码层次结构找到正确的位置?

4

2 回答 2

0

在这种情况下,我很可能没有将所有 SSJS 代码放入 try/catch 块中。坏消息:搜索此错误的原因非常麻烦,因为靠近所有 SSJS 块可能是此错误的根本原因。

出于这个原因,我设置了自己的规则(并且不时地忽略它)将每个 SSJS 块放入 try/catch 中,如下所示:

try {
    // ... do fancy stuff here
} catch (e) {
    print(e.toString());
}

toString() 调用用于某些特殊情况,其中错误对象似乎不会自动转换为可以由 print 方法处理的对象。

如果是这种情况,您还没有将所有 SSJS 块放入 try/catch 中,这正是这样做并为将来保留该编码模式的正确时机。它真的时不时有帮助;-)

于 2013-02-26T16:32:27.630 回答
0

而不是 printStackTrace 和 toString() ,您可以只说 print(e),它只会输出错误消息(应该与 e.message 相同)。如果将错误对象传递给 java 例程,您可以获得错误行。

嵌套在块层次结构中的变量“组件”==>我们已经使这个工作没有问题。

于 2013-10-21T19:42:34.003 回答