本文整理汇总了C++中JEnv::ExceptionCheck方法的典型用法代码示例。如果您正苦于以下问题:C++ JEnv::ExceptionCheck方法的具体用法?C++ JEnv::ExceptionCheck怎么用?C++ JEnv::ExceptionCheck使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类JEnv
的用法示例。
在下文中一共展示了JEnv::ExceptionCheck方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GetCachedConstructorId
int NativeScriptRuntime::GetCachedConstructorId(JEnv& env, const FunctionCallbackInfo<Value>& args, const string& fullClassName, jobjectArray javaArgs, jclass javaClass)
{
int ctorId = -1;
string encodedCtorArgs = MethodCache::EncodeSignature(fullClassName, "<init>", args, false);
auto itFound = s_constructorCache.find(encodedCtorArgs);
if (itFound != s_constructorCache.end())
{
ctorId = itFound->second;
}
else
{
jint id = env.CallStaticIntMethod(PlatformClass, CACHE_CONSTRUCTOR_METHOD_ID, javaClass, javaArgs);
if (env.ExceptionCheck() == JNI_FALSE)
{
ctorId = id;
s_constructorCache.insert(make_pair(encodedCtorArgs, ctorId));
}
}
DEBUG_WRITE("GetCachedConstructorId: encodedCtorArgs=%s, ctorId=%d", encodedCtorArgs.c_str(), ctorId);
return ctorId;
}
示例2:
Local<Object> NativeScriptRuntime::FindClass(const string& className)
{
Local<Object> clazz;
JEnv env;
jclass c = env.FindClass(className);
if (env.ExceptionCheck() == JNI_FALSE)
{
jint javaObjectID = objectManager->GetOrCreateObjectId(c);
clazz = objectManager->GetJsObjectByJavaObject(javaObjectID);
if (clazz.IsEmpty())
{
clazz = objectManager->CreateJSWrapper(javaObjectID, "Ljava/lang/Class;", c);
}
}
return clazz;
}
示例3: name
Handle<Object> NativeScriptRuntime::FindClass(const string& className)
{
Handle<Object> clazz;
JEnv env;
jmethodID mid = env.GetStaticMethodID(PlatformClass, "findClass", "(Ljava/lang/String;)Ljava/lang/Class;");
assert(mid != nullptr);
JniLocalRef name(env.NewStringUTF(className.c_str()));
jclass c = (jclass)env.CallStaticObjectMethod(PlatformClass, mid, (jstring)name);
if (env.ExceptionCheck() == JNI_FALSE)
{
jint javaObjectID = objectManager->GetOrCreateObjectId(c);
clazz = objectManager->GetJsObjectByJavaObject(javaObjectID);
if (clazz.IsEmpty())
{
clazz = objectManager->CreateJSWrapper(javaObjectID, "Ljava/lang/Class;", c);
}
env.DeleteLocalRef(c);
}
return clazz;
}
示例4: CallJavaMethod
//.........这里部分代码省略.........
result = env.CallNonvirtualDoubleMethodA(callerJavaObject, clazz, mid, javaArgs);
}
else
{
result = env.CallDoubleMethodA(callerJavaObject, mid, javaArgs);
}
args.GetReturnValue().Set(result);
break;
}
case '[':
case 'L':
{
bool isString = returnType == "Ljava/lang/String;";
jobject result = nullptr;
bool exceptionOccurred;
if (isString)
{
if (isStatic)
{
result = env.CallStaticObjectMethodA(clazz, mid, javaArgs);
}
else if (isSuper)
{
result = env.CallNonvirtualObjectMethodA(callerJavaObject, clazz, mid, javaArgs);
}
else
{
result = env.CallObjectMethodA(callerJavaObject, mid, javaArgs);
}
exceptionOccurred = env.ExceptionCheck() == JNI_TRUE;
if (!exceptionOccurred)
{
auto resultV8String = ArgConverter::jstringToV8String((jstring) result);
args.GetReturnValue().Set(resultV8String);
}
}
else
{
if (isStatic)
{
result = env.CallStaticObjectMethodA(clazz, mid, javaArgs);
}
else if (isSuper)
{
result = env.CallNonvirtualObjectMethodA(callerJavaObject, clazz, mid, javaArgs);
}
else
{
result = env.CallObjectMethodA(callerJavaObject, mid, javaArgs);
}
exceptionOccurred = env.ExceptionCheck() == JNI_TRUE;
if (!exceptionOccurred)
{
if (result != nullptr)
{
isString = env.IsInstanceOf(result, JAVA_LANG_STRING);
Handle<Value> objectResult;
if (isString)