आम तौर पर, जावा कंपाइलर पुष्टि करता है कि फेंकने वाले सभी चेक अपवाद फेंक विनिर्देशन में हैं। क्या कुछ विशेष होता है जब एक देशी फ़ंक्शन एक जावा चेक अपवाद फेंकता है जो फ़ंक्शंस में नहीं था विनिर्देश सूची फेंकता है, या क्या फेंक विनिर्देश सूची को रनटाइम पर अनदेखा किया जाता है?जावा चेक अपवाद फ़ंक्शन के फेंक विनिर्देशन में नहीं है?
सी ++
void function(JNIEnv * env, jclass jc) {
jclass newExcCls = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExcCls, "ERROR");
}
जावा
public class Tester {
static {
System.loadLibrary("MyLibrary");
}
private static native void function();
public static void main(String [ ] args) {
try {
function();
} catch(Exception e) { //is it caught? Or what happens?
e.printStackTrace();
}
}
}
(सी ++ फ़ंक्शन का नाम शायद घायल कर दिया जाएगा। इसके अलावा LoadLibrary एक कोशिश पकड़ में होना चाहिए। परवाह मत करो, मैं यह विश्वास नहीं करते समस्या से प्रासंगिक। कोड में संभवतः अन्य त्रुटियां हैं, लेकिन संभवतः वे प्रासंगिक नहीं हैं।)
मुझे आश्चर्य है कि यह एक डुप्लिकेट नहीं है। –