我正在运行自己的代理对象,它扩展了org.mozilla.javascript.ScriptableObject。 我也有自己的功能,扩展了org.mozilla.javascript.Function。
我希望在这里抛出任何异常,返回行号,如果可能的话,返回它们在评估脚本中出现的列号。这可能吗?我只能访问上下文和范围。
答案 0 :(得分:1)
每当从脚本抛出异常时,Rhino都会抛出已经有行号和列号的RhinoException(以及更多)。但是,当您执行脚本时,您需要提供Rhino将用作起始行号的行号。发生异常/错误的实际行号将相对于此数字。所以有一点是这样的:
//-- Define a simple test script to test if things are working or not.
String testScript = "function simpleJavascriptFunction() {" +
" this line has syntax error." +
"}" +
"simpleJavascriptFunction();";
//-- Compile the test script.
Script compiledScript = Context.getCurrentContext().compileString(testScript, "My Test Script", 2, null);
//-- Execute the test script.
compiledScript.exec(Context.getCurrentContext(), anyJavascriptScope);
在上面的代码中,起始行号设置为2(对compileString()的调用的第三个参数)。执行此操作时,Rhino将抛出一个RhinoException,它将lineNumber属性设置为值'3'(第一行被视为我们传递2的第二行b / c)。
希望这有帮助。