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.
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ą? –
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