2011-10-25 8 views
6

jestem realizujących JavaScripts używając silnik skryptowy JSR-223 wbudowany w JRE6. Skrypty JavaScript są w stanie uzyskać dostęp do kodu i obiektów Java. Gdy wyjątek jest generowany z kodu Java, który jest wykonywany z JavaScript, ScriptEngine rzuci wyjątek ScriptException.Jak uzyskać dostęp wyjątek Java, który powoduje ScriptException za pomocą JSR-223

Chcę być w stanie uzyskać dostęp do wyjątku Java, który spowodował Javascript wyjątek.

Z JavaScript, mogę złapać wyjątek i spojrzeć na polu javaException wyjątku:

try 
{ 
    . 
} 
catch (e) 
{ 
    e.javaException.printStackTrace(); 
} 

Jednak nie mam kontroli nad JavaScript, tylko wykonanie ich z ScriptEngine . Czy istnieje sposób na pobranie "wewnętrznego" wyjątku Java z wyjątku ScriptException?

wierzę, gdybym był przy użyciu Rhino The RhinoException miałoby wyjątkiem Java dostępne. Wyjątek RhinoException nie jest dostępny z interfejsu API JSR-223.

+0

Czy ['Throwable.getCause()'] (http://download.oracle.com/javase/7/docs/api/java/lang/Throwable.html#getCause%28%29) nie rób tego, co Ty pytają? –

+0

W wyjątku ScriptException spowodowanym na poziomie Java, wewnętrzny wyjątek WrappedException jest używany przez Rhino. _However_, sama "przyczyna" ustawiona na wyjątek skryptu. Nie ma sposobu, aby uzyskać zawinięty wyjątek i zobaczyć, gdzie dokładnie wystąpił wyjątek poziomu Java, nawet nie używając refleksji nad klasami rhino nie-JSR. To wydaje się być poważnym błędem. – pdinklag

Odpowiedz

0

próbowałeś e.getCause()?

+0

tak, ale zatrzymuje się na JavaScript, nie zawiera przyczyny z kodu Java –

Powiązane problemy