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

时间:2016-09-03 02:52:19

标签: javascript java exception rhino

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

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

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

但是,有没有办法将标签附加到给定的eval,以便它可以在堆栈跟踪中提供更好的提示?类似的东西:

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

因此,当抛出异常时,它会在第7行写出:(Label1)。

这样可以更容易地调试并找到问题的根源。

1 个答案:

答案 0 :(得分:0)

JS eval函数上的Crate简单包装器:

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