@@ -117,23 +117,6 @@ jsi::Value convertFromJMapToValue(JNIEnv *env, jsi::Runtime &rt, jobject arg) {
117
117
return jsi::valueFromDynamic (rt, result->cthis ()->consume ());
118
118
}
119
119
120
- static void throwIfJNIReportsPendingException () {
121
- JNIEnv *env = jni::Environment::current ();
122
- if (env->ExceptionCheck ()) {
123
- jthrowable ex = env->ExceptionOccurred ();
124
-
125
- // There should be no pending exceptions before we call into JNI
126
- env->ExceptionClear ();
127
-
128
- auto exception = jni::adopt_local (ex);
129
- auto getMessage =
130
- exception ->getClass ()->getMethod <std::string ()>(" getMessage" );
131
- auto message = getMessage (exception )->toStdString ();
132
-
133
- throw std::runtime_error (message);
134
- }
135
- }
136
-
137
120
jsi::Value JavaTurboModule::invokeJavaMethod (
138
121
jsi::Runtime &runtime,
139
122
TurboModuleMethodValueKind valueKind,
@@ -151,7 +134,7 @@ jsi::Value JavaTurboModule::invokeJavaMethod(
151
134
// TODO(T43933641): Refactor to remove this special-casing
152
135
if (methodName == " getConstants" ) {
153
136
auto constantsMap = (jobject)env->CallObjectMethod (instance, methodID);
154
- throwIfJNIReportsPendingException ();
137
+ FACEBOOK_JNI_THROW_PENDING_EXCEPTION ();
155
138
156
139
if (constantsMap == nullptr ) {
157
140
return jsi::Value::undefined ();
@@ -166,28 +149,28 @@ jsi::Value JavaTurboModule::invokeJavaMethod(
166
149
switch (valueKind) {
167
150
case VoidKind: {
168
151
env->CallVoidMethodA (instance, methodID, jargs.data ());
169
- throwIfJNIReportsPendingException ();
152
+ FACEBOOK_JNI_THROW_PENDING_EXCEPTION ();
170
153
171
154
return jsi::Value::undefined ();
172
155
}
173
156
case BooleanKind: {
174
157
bool returnBoolean =
175
158
(bool )env->CallBooleanMethodA (instance, methodID, jargs.data ());
176
- throwIfJNIReportsPendingException ();
159
+ FACEBOOK_JNI_THROW_PENDING_EXCEPTION ();
177
160
178
161
return jsi::Value (returnBoolean);
179
162
}
180
163
case NumberKind: {
181
164
double returnDouble =
182
165
(double )env->CallDoubleMethodA (instance, methodID, jargs.data ());
183
- throwIfJNIReportsPendingException ();
166
+ FACEBOOK_JNI_THROW_PENDING_EXCEPTION ();
184
167
185
168
return jsi::Value (returnDouble);
186
169
}
187
170
case StringKind: {
188
171
auto returnString =
189
172
(jstring)env->CallObjectMethodA (instance, methodID, jargs.data ());
190
- throwIfJNIReportsPendingException ();
173
+ FACEBOOK_JNI_THROW_PENDING_EXCEPTION ();
191
174
192
175
if (returnString == nullptr ) {
193
176
return jsi::Value::null ();
@@ -200,7 +183,7 @@ jsi::Value JavaTurboModule::invokeJavaMethod(
200
183
case ObjectKind: {
201
184
auto returnObject =
202
185
(jobject)env->CallObjectMethodA (instance, methodID, jargs.data ());
203
- throwIfJNIReportsPendingException ();
186
+ FACEBOOK_JNI_THROW_PENDING_EXCEPTION ();
204
187
205
188
if (returnObject == nullptr ) {
206
189
return jsi::Value::null ();
@@ -212,7 +195,7 @@ jsi::Value JavaTurboModule::invokeJavaMethod(
212
195
case ArrayKind: {
213
196
auto returnObject =
214
197
(jobject)env->CallObjectMethodA (instance, methodID, jargs.data ());
215
- throwIfJNIReportsPendingException ();
198
+ FACEBOOK_JNI_THROW_PENDING_EXCEPTION ();
216
199
217
200
if (returnObject == nullptr ) {
218
201
return jsi::Value::null ();
@@ -268,7 +251,7 @@ jsi::Value JavaTurboModule::invokeJavaMethod(
268
251
269
252
jsi::Value promise =
270
253
Promise.callAsConstructor (runtime, promiseConstructorArg);
271
- throwIfJNIReportsPendingException ();
254
+ FACEBOOK_JNI_THROW_PENDING_EXCEPTION ();
272
255
273
256
return promise;
274
257
}
0 commit comments