2011-10-25 23 views
6

我正在使用內置於JRE6中的JSR-223腳本引擎來執行Javascript。 Javascript能夠訪問Java代碼和對象。當從JavaScript執行的Java代碼拋出異常時,ScriptEngine將引發ScriptException。如何使用JSR-223訪問導致ScriptException的Java異常

我想要能夠訪問導致Javascript拋出異常的Java異常。

從JavaScript,我可以捕獲該異常,並期待在異常的javaException領域:

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

不過,我沒有使用Javascript的控制,只能從該ScriptEngine的他們執行。有沒有辦法從ScriptException中獲取「內部」Java異常?

我相信如果我使用Rhino,RhinoException會有Java異常。 RhinoException從JSR-223 API中不可用。

+0

[[Throwable.getCause()'](http://download.oracle.com/javase/7/docs/api/java/lang/Throwable.html#getCause%28%29)不能做你所做的問? –

+0

在Java級別引起的ScriptException中,Rhino會在內部使用WrappedException。但是,設置爲腳本異常的「原因」本身就是它自己。沒有辦法獲得包裝的異常,看看究竟發生了什麼Java級別的異常,甚至沒有使用對非JSR犀牛類的反射。這似乎是一個嚴重的錯誤。 – pdinklag

回答

0

你試過e.getCause()

+0

是的,但它停在JavaScript處,它不包含Java代碼的原因 –