From 4ad852c1376e268456cd6dcd0d240dd75d780df4 Mon Sep 17 00:00:00 2001 From: David Vacca Date: Wed, 27 Nov 2019 15:54:37 -0800 Subject: [PATCH] Add extra logging in the Bridge exception handling Summary: This diff adds extra logging in the method that handles exceptions for RN Android Changelog: internal Reviewed By: JoshuaGross Differential Revision: D18694123 fbshipit-source-id: e275445b65473ed55eec9d4b823938e32fa805e5 --- .../facebook/react/bridge/ReactContext.java | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java index 11428cba25..a82c21a33d 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java @@ -16,11 +16,13 @@ import android.content.Intent; import android.os.Bundle; import android.view.LayoutInflater; import androidx.annotation.Nullable; +import com.facebook.common.logging.FLog; import com.facebook.infer.annotation.Assertions; import com.facebook.infer.annotation.ThreadConfined; import com.facebook.react.bridge.queue.MessageQueueThread; import com.facebook.react.bridge.queue.ReactQueueConfiguration; import com.facebook.react.common.LifecycleState; +import com.facebook.react.common.ReactConstants; import com.facebook.react.config.ReactFeatureFlags; import java.lang.ref.WeakReference; import java.util.concurrent.CopyOnWriteArraySet; @@ -359,11 +361,23 @@ public class ReactContext extends ContextWrapper { * otherwise. */ public void handleException(Exception e) { - if (mCatalystInstance != null - && !mCatalystInstance.isDestroyed() - && mNativeModuleCallExceptionHandler != null) { + boolean catalystInstanceVariableExists = mCatalystInstance != null; + boolean isCatalystInstanceAlive = + catalystInstanceVariableExists && !mCatalystInstance.isDestroyed(); + boolean hasExceptionHandler = mNativeModuleCallExceptionHandler != null; + + if (isCatalystInstanceAlive && hasExceptionHandler) { mNativeModuleCallExceptionHandler.handleException(e); } else { + FLog.e( + ReactConstants.TAG, + "Unable to handle Exception - catalystInstanceVariableExists: " + + catalystInstanceVariableExists + + " - isCatalystInstanceAlive: " + + !isCatalystInstanceAlive + + " - hasExceptionHandler: " + + hasExceptionHandler, + e); throw new RuntimeException(e); } }