< prev index next >
jdk/src/java.base/share/native/libjli/java.c
Print this page
@@ -374,10 +374,16 @@
ret = (CEL_return_value); \
LEAVE(); \
} \
} while (JNI_FALSE)
+#define CHECK_EXCEPTION_PRINT() \
+ do { \
+ if ((*env)->ExceptionOccurred(env)) { \
+ JLI_ReportExceptionDescription(env); \
+ } \
+ } while (JNI_FALSE)
int JNICALL
JavaMain(void * _args)
{
JavaMainArgs *args = (JavaMainArgs *)_args;
@@ -1527,10 +1533,11 @@
cls, "makePlatformString", "(Z[B)Ljava/lang/String;"));
}
str = (*env)->CallStaticObjectMethod(env, cls,
makePlatformStringMID, USE_STDERR, ary);
(*env)->DeleteLocalRef(env, ary);
+ CHECK_EXCEPTION_PRINT();
return str;
}
}
return 0;
}
@@ -1578,10 +1585,11 @@
"(ZILjava/lang/String;)Ljava/lang/Class;"));
NULL_CHECK0(str = NewPlatformString(env, name));
NULL_CHECK0(result = (*env)->CallStaticObjectMethod(env, cls, mid,
USE_STDERR, mode, str));
+ CHECK_EXCEPTION_PRINT();
if (JLI_IsTraceLauncher()) {
end = CounterGet();
printf("%ld micro seconds to load main class\n",
(long)(jint)Counter2Micros(end-start));
@@ -1599,11 +1607,13 @@
NULL_CHECK0(cls);
NULL_CHECK0(mid = (*env)->GetStaticMethodID(env, cls,
"getApplicationClass",
"()Ljava/lang/Class;"));
- return (*env)->CallStaticObjectMethod(env, cls, mid);
+ cls = (*env)->CallStaticObjectMethod(env, cls, mid);
+ CHECK_EXCEPTION_PRINT();
+ return cls;
}
/*
* For tools, convert command line args thus:
* javac -cp foo:foo/"*" -J-ms32m ...
@@ -1810,10 +1820,11 @@
"()V"
)
);
(*env)->CallStaticVoidMethod(env, ver, print);
+ CHECK_EXCEPTION_PRINT();
}
/*
* Prints all the Java settings, see the java implementation for more details.
*/
@@ -1832,10 +1843,11 @@
joptString,
(jlong)initialHeapSize,
(jlong)maxHeapSize,
(jlong)threadStackSize,
ServerClassMachine());
+ CHECK_EXCEPTION_PRINT();
}
/**
* List modules supported by the runtime
*/
@@ -1850,10 +1862,11 @@
"listModules", "(ZLjava/lang/String;)V"));
NULL_CHECK(joptString = (*env)->NewStringUTF(env, optString));
(*env)->CallStaticVoidMethod(env, cls, listModulesID,
USE_STDERR,
joptString);
+ CHECK_EXCEPTION_PRINT();
}
/*
* Prints default usage or the Xusage message, see sun.launcher.LauncherHelper.java
*/
@@ -1867,10 +1880,11 @@
NULL_CHECK(cls);
if (doXUsage) {
NULL_CHECK(printXUsageMessage = (*env)->GetStaticMethodID(env, cls,
"printXUsageMessage", "(Z)V"));
(*env)->CallStaticVoidMethod(env, cls, printXUsageMessage, USE_STDERR);
+ CHECK_EXCEPTION_PRINT();
} else {
NULL_CHECK(initHelp = (*env)->GetStaticMethodID(env, cls,
"initHelpMessage", "(Ljava/lang/String;)V"));
NULL_CHECK(vmSelect = (*env)->GetStaticMethodID(env, cls, "appendVmSelectMessage",
@@ -1931,10 +1945,11 @@
CHECK_EXCEPTION_RETURN();
}
/* Complete the usage message and print to stderr*/
(*env)->CallStaticVoidMethod(env, cls, printHelp, USE_STDERR);
+ CHECK_EXCEPTION_RETURN();
}
return;
}
/*
< prev index next >