diff --git a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java index 8bb5423e9c4..dd823f84ada 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java @@ -79,7 +79,6 @@ import com.facebook.react.modules.debug.DeveloperSettings; public class DevSupportManagerImpl implements DevSupportManager { private static final int JAVA_ERROR_COOKIE = -1; - private static final int JSEXCEPTION_ERROR_COOKIE = -1; private static final String JS_BUNDLE_FILE_NAME = "ReactNativeDevBundle.js"; private static enum ErrorType { JS, @@ -195,13 +194,7 @@ public class DevSupportManagerImpl implements DevSupportManager { public void handleException(Exception e) { if (mIsDevSupportEnabled) { FLog.e(ReactConstants.TAG, "Exception in native call from JS", e); - if (e instanceof JSException) { - // TODO #11638796: convert the stack into something useful - showNewError(e.getMessage() + "\n\n" + ((JSException) e).getStack(), new StackFrame[] {}, - JSEXCEPTION_ERROR_COOKIE, ErrorType.JS); - } else { - showNewJavaError(e.getMessage(), e); - } + showNewJavaError(e.getMessage(), e); } else { mDefaultNativeModuleCallExceptionHandler.handleException(e); } diff --git a/ReactAndroid/src/main/java/com/facebook/react/devsupport/JSException.java b/ReactAndroid/src/main/java/com/facebook/react/devsupport/JSException.java deleted file mode 100644 index ca83f57bb7b..00000000000 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/JSException.java +++ /dev/null @@ -1,37 +0,0 @@ -/** - * Copyright (c) 2015-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - */ - -package com.facebook.react.devsupport; - -import com.facebook.proguard.annotations.DoNotStrip; - -/** - * This represents an error evaluating JavaScript. It includes the usual - * message, and the raw JS stack where the error occurred (which may be empty). - */ - -@DoNotStrip -public class JSException extends Exception { - private final String mStack; - - @DoNotStrip - public JSException(String message, String stack, Throwable cause) { - super(message, cause); - mStack = stack; - } - - public JSException(String message, String stack) { - super(message); - mStack = stack; - } - - public String getStack() { - return mStack; - } -} diff --git a/ReactAndroid/src/main/jni/xreact/jni/JMessageQueueThread.cpp b/ReactAndroid/src/main/jni/xreact/jni/JMessageQueueThread.cpp index 2510c2841be..6cba3235cd2 100644 --- a/ReactAndroid/src/main/jni/xreact/jni/JMessageQueueThread.cpp +++ b/ReactAndroid/src/main/jni/xreact/jni/JMessageQueueThread.cpp @@ -9,37 +9,11 @@ #include #include -#include - #include "JNativeRunnable.h" namespace facebook { namespace react { -namespace { - -struct JavaJSException : jni::JavaClass { - static constexpr auto kJavaDescriptor = "Lcom/facebook/react/devsupport/JSException;"; - - static local_ref create(const char* message, const char* stack, - const std::exception& ex) { - local_ref cause = jni::JCppException::create(ex); - return newInstance(make_jstring(message), make_jstring(stack), cause.get()); - } -}; - -std::function wrapRunnable(std::function&& runnable) { - return [runnable=std::move(runnable)] { - try { - runnable(); - } catch (const JSException& ex) { - throwNewJavaException(JavaJSException::create(ex.what(), ex.getStack().c_str(), ex).get()); - } - }; -} - -} - JMessageQueueThread::JMessageQueueThread(alias_ref jobj) : m_jobj(make_global(jobj)) { } @@ -47,7 +21,7 @@ JMessageQueueThread::JMessageQueueThread(alias_ref&& runnable) { static auto method = JavaMessageQueueThread::javaClassStatic()-> getMethod("runOnQueue"); - method(m_jobj, JNativeRunnable::newObjectCxxArgs(wrapRunnable(std::move(runnable))).get()); + method(m_jobj, JNativeRunnable::newObjectCxxArgs(runnable).get()); } void JMessageQueueThread::runOnQueueSync(std::function&& runnable) { @@ -55,7 +29,7 @@ void JMessageQueueThread::runOnQueueSync(std::function&& runnable) { getMethod("isOnThread"); if (jIsOnThread(m_jobj)) { - wrapRunnable(std::move(runnable))(); + runnable(); } else { std::mutex signalMutex; std::condition_variable signalCv;