Rhino Javascript -如何为异常堆栈跟踪标记字符串源

Rhino Javascript - how to label a string source for exception stacktrace

本文关键字:跟踪 字符串 堆栈 异常 Javascript Rhino      更新时间:2023-09-26

我们使用Rhino Javascript (JDK7解释模式),从scriptenengine .eval(String)和Javascript中使用eval(String)大量使用"eval"。我们认识到eval可能存在安全问题……但除此之外…

当抛出一个异常时,它最终被java捕获,java堆栈跟踪在第7行打印出类似:(#7)的内容。

源名称未知是有意义的,因为我们只是给了它一个字符串给eval。

然而,是否有任何方法将标签附加到给定的eval,以便它将在堆栈跟踪中提供更好的提示?比如:

String jsCode = "va z=x+y".....
eval(jsCode, "label1");

因此,当抛出异常时,它会像这样说:(Label1) in at line number 7。

这将使调试和找到问题的根源更容易。

创建JS eval函数的简单包装器:

function evalWithLabel(js, label) {
    try {
        return eval(js);
    } catch(err) {
        throw label + ': ' + err;
    }
}