JavaClassWrapper: Allow handling exceptions (rather than just crashing)

This commit is contained in:
David Snopek 2025-02-14 09:27:40 -06:00
parent b607110ad2
commit 5d69d20059
4 changed files with 29 additions and 0 deletions

View file

@ -517,6 +517,20 @@ bool JavaClass::_call_method(JavaObject *p_instance, const StringName &p_method,
env->DeleteLocalRef(E);
}
jobject exception = env->ExceptionOccurred();
if (exception) {
env->ExceptionClear();
jclass java_class = env->GetObjectClass(exception);
Ref<JavaClass> java_class_wrapped = JavaClassWrapper::singleton->wrap_jclass(java_class);
env->DeleteLocalRef(java_class);
JavaClassWrapper::singleton->exception.instantiate(java_class_wrapped, exception);
env->DeleteLocalRef(exception);
} else {
JavaClassWrapper::singleton->exception.unref();
}
return success;
}