Носорог: получение строки № и столбца №
Я использую свои собственные прокси-объекты, которые расширяют org.mozilla.javascript.ScriptableObject. У меня также есть свои собственные функции, которые расширяют org.mozilla.javascript.Function.
Я хочу, чтобы любые исключения, выдаваемые здесь, возвращали строку no и, если возможно, номер столбца, в котором они встречались в оцененном скрипте. Это возможно? У меня есть только доступ к контексту и сфере.
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" (первая строка обрабатывается как вторая строка b/c, которую мы передали 2).
Надеюсь это поможет.