2011-10-25 5 views
6

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.

+0

Does ['Throwable.getCause()'] (http://download.oracle.com/javase/7/docs/api/java/lang/Throwable.html#getCause%28%29) non fa ciò che stai chiedendo? –

+0

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

risposta

0

hai provato e.getCause()?

+0

sì, ma si ferma su JavaScript, non contiene la causa dal codice Java –

Problemi correlati