我们使用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)。
这样可以更容易地调试并找到问题的根源。
答案 0 :(得分:0)
JS eval函数上的Crate简单包装器:
function evalWithLabel(js, label) {
try {
return eval(js);
} catch(err) {
throw label + ': ' + err;
}
}