Sto eseguendo Javascripts utilizzando il motore di script JSR-223 incorporato in JRE6. I Javascripts sono in grado di accedere a codice e oggetti Java. Quando un'eccezione viene generata dal codice Java che viene eseguito da un JavaScript, ScriptEngine genererà un'eccezione ScriptException.Come accedere all'eccezione Java che causa ScriptException utilizzando JSR-223
Desidero poter accedere all'eccezione Java che ha causato il lancio di un'eccezione da parte di Javascript.
Dal Javascript, posso intercettare l'eccezione e guardare il campo javaException dell'eccezione:
try
{
.
}
catch (e)
{
e.javaException.printStackTrace();
}
Tuttavia, non ho il controllo del Javascript, solo l'esecuzione di loro dal ScriptEngine . C'è un modo per afferrare l'eccezione Java "interna" da ScriptException?
Credo che se stavo usando Rhino, RhinoException avrebbe un'eccezione Java disponibile. RhinoException non è disponibile dall'API JSR-223.
Does ['Throwable.getCause()'] (http://download.oracle.com/javase/7/docs/api/java/lang/Throwable.html#getCause%28%29) non fa ciò che stai chiedendo? –
In una ScriptException causata a livello Java, Rhino internamente utilizza una WrappedException. Tuttavia, la "causa" impostata sull'eccezione di script è di per sé. Non c'è modo di ottenere l'eccezione avvolta e vedere dove si è verificata esattamente l'eccezione a livello di Java, nemmeno usando la riflessione sulle classi di rhino non JSR. Questo sembra essere un bug grave. – pdinklag