2011-10-25 10 views
6

का उपयोग कर स्क्रिप्टएक्सप्शन का कारण बनता है मैं जेआरई 6 में निर्मित जेएसआर -223 स्क्रिप्ट इंजन का उपयोग कर जावास्क्रिप्ट निष्पादित कर रहा हूं। जावास्क्रिप्ट जावा कोड और ऑब्जेक्ट्स तक पहुंचने में सक्षम हैं। जावास्क्रिप्ट से निष्पादित जावा कोड से अपवाद फेंक दिया जाता है, तो ScriptEngine एक स्क्रिप्ट अपवाद फेंक देगा।जावा अपवाद का उपयोग कैसे करें जो जेएसआर -223

मैं जावा अपवाद तक पहुंचने में सक्षम होना चाहता हूं जिसके कारण जावास्क्रिप्ट को अपवाद फेंक दिया गया।

जावास्क्रिप्ट से, मैं अपवाद को पकड़ने और अपवाद की javaException क्षेत्र देख सकते हैं:

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

हालांकि, मैं जावास्क्रिप्ट का नियंत्रण, ScriptEngine से उनमें से केवल निष्पादन की जरूरत नहीं है । क्या ScriptException से "आंतरिक" जावा अपवाद को पकड़ने का कोई तरीका है?

मुझे विश्वास है कि अगर मैं राइनो का उपयोग कर रहा था, तो RhinoException में जावा अपवाद उपलब्ध होगा। RhinoException जेएसआर -223 एपीआई से उपलब्ध नहीं है।

+0

क्या ['थ्रोबल .getCause()'] (http://download.oracle.com/javase/7/docs/api/java/lang/Throwable.html#getCause%28%29) जो भी नहीं करता पूछ रहे हैं –

+0

जावा स्तरीय कारण के कारण स्क्रिप्ट अपवाद में, राइनो द्वारा आंतरिक रूप से एक लपेटा हुआ अपवाद का उपयोग किया जाता है। _However_, स्क्रिप्ट अपवाद पर सेट "कारण" स्वयं ही है। लपेटा हुआ अपवाद प्राप्त करने का कोई तरीका नहीं है और देखें कि जावा स्तर का अपवाद कहां हुआ, गैर-जेएसआर गैंडो कक्षाओं पर प्रतिबिंब का उपयोग भी नहीं किया। यह एक गंभीर बग प्रतीत होता है। – pdinklag

उत्तर

0

क्या आपने e.getCause() को आजमाया है?

+0

हाँ, लेकिन यह जावास्क्रिप्ट पर रुकता है, इसमें जावा कोड का कारण नहीं है –

संबंधित मुद्दे