1
我正在運行自己的代理對象,它們擴展了org.mozilla.javascript.ScriptableObject。 我也有我自己的擴展org.mozilla.javascript.Function的函數。犀牛:檢索行號和列號
我的願望是在這裏拋出任何異常返回行號和如果可能的話,他們發生在評估腳本中的列號。這可能嗎?我只能訪問上下文和範圍。
我正在運行自己的代理對象,它們擴展了org.mozilla.javascript.ScriptableObject。 我也有我自己的擴展org.mozilla.javascript.Function的函數。犀牛:檢索行號和列號
我的願望是在這裏拋出任何異常返回行號和如果可能的話,他們發生在評估腳本中的列號。這可能嗎?我只能訪問上下文和範圍。
只要腳本拋出異常,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)。
希望這會有所幫助。
事實上,我認爲我所追求的是不可能的。我實際上沒有調用腳本,而是犀牛在我的對象上調用一個函數 –