2011-10-25 13 views
6

Tôi đang thực thi Javascripts bằng cách sử dụng công cụ kịch bản JSR-223 được tích hợp vào JRE6. Javascripts có thể truy cập mã Java và các đối tượng. Khi một ngoại lệ được ném từ mã Java được thực thi từ một JavaScript, ScriptEngine sẽ ném một ScriptException.Cách truy cập ngoại lệ Java khiến ScriptException sử dụng JSR-223

Tôi muốn có thể truy cập ngoại lệ Java khiến Javascript ném một ngoại lệ.

Từ Javascript, tôi có thể nắm bắt những ngoại lệ và nhìn vào lĩnh vực javaException của ngoại lệ:

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

Tuy nhiên, tôi không có quyền kiểm soát của Javascript, chỉ việc thực hiện chúng từ ScriptEngine . Có cách nào để lấy ngoại lệ Java "bên trong" từ ScriptException không?

Tôi tin rằng nếu tôi đang sử dụng Rhino, RhinoException sẽ có ngoại lệ Java. RhinoException không có sẵn từ API JSR-223.

+0

Có ['Throwable.getCause()'] (http://download.oracle.com/javase/7/docs/api/java/lang/Throwable.html#getCause%28%29) không làm những gì bạn đang hỏi? –

+0

Trong một ScriptException gây ra trên một mức Java, một WrappedException được sử dụng bởi Rhino trong nội bộ. _However_, "nguyên nhân" được đặt thành ngoại lệ của tập lệnh là chính nó. Không có cách nào để có được ngoại lệ được bao bọc và xem chính xác trường hợp ngoại lệ mức Java xảy ra, thậm chí không sử dụng sự phản chiếu qua các lớp tê giác không JSR. Điều này có vẻ là một lỗi nghiêm trọng. – pdinklag

Trả lời

0

bạn đã thử e.getCause() chưa?

+0

có, nhưng nó dừng lại ở JavaScript, nó không chứa nguyên nhân từ mã Java –

Các vấn đề liên quan