diff --git a/packages/react-native/ReactAndroid/api/ReactAndroid.api b/packages/react-native/ReactAndroid/api/ReactAndroid.api index 875c4dc0041..9c0fe19eff8 100644 --- a/packages/react-native/ReactAndroid/api/ReactAndroid.api +++ b/packages/react-native/ReactAndroid/api/ReactAndroid.api @@ -1709,14 +1709,10 @@ public class com/facebook/react/common/DebugServerException : java/lang/RuntimeE public static fun parse (Ljava/lang/String;Ljava/lang/String;)Lcom/facebook/react/common/DebugServerException; } -public abstract interface class com/facebook/react/common/HasJavascriptExceptionMetadata { - public abstract fun getExtraDataAsJson ()Ljava/lang/String; -} - -public class com/facebook/react/common/JavascriptException : java/lang/RuntimeException, com/facebook/react/common/HasJavascriptExceptionMetadata { +public class com/facebook/react/common/JavascriptException : java/lang/RuntimeException { public fun (Ljava/lang/String;)V - public fun getExtraDataAsJson ()Ljava/lang/String; - public final fun setExtraDataAsJson (Ljava/lang/String;)Lcom/facebook/react/common/JavascriptException; + public final fun getExtraDataAsJson ()Ljava/lang/String; + public final fun setExtraDataAsJson (Ljava/lang/String;)V } public final class com/facebook/react/common/LifecycleState : java/lang/Enum { diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactNoCrashSoftException.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactNoCrashSoftException.java index 960eefb3033..eef596686d5 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactNoCrashSoftException.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactNoCrashSoftException.java @@ -7,6 +7,8 @@ package com.facebook.react.bridge; +import javax.annotation.Nullable; + /** * Extends RuntimeException so that it may be caught by a {@link ReactSoftExceptionListener}. Any * {@link ReactSoftExceptionListener} that catches a ReactNoCrashSoftException should log it only @@ -21,7 +23,7 @@ public class ReactNoCrashSoftException extends RuntimeException { super(e); } - public ReactNoCrashSoftException(String m, Throwable e) { + public ReactNoCrashSoftException(String m, @Nullable Throwable e) { super(m, e); } } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/common/HasJavascriptExceptionMetadata.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/common/HasJavascriptExceptionMetadata.java deleted file mode 100644 index 15c065deb3b..00000000000 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/common/HasJavascriptExceptionMetadata.java +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -package com.facebook.react.common; - -import javax.annotation.Nullable; - -/** A JS exception carrying metadata. */ -public interface HasJavascriptExceptionMetadata { - - @Nullable - String getExtraDataAsJson(); -} diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/common/JavascriptException.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/common/JavascriptException.kt index df15d4567f9..c961551373c 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/common/JavascriptException.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/common/JavascriptException.kt @@ -14,14 +14,6 @@ import com.facebook.proguard.annotations.DoNotStrip * to developers in a redbox. */ @DoNotStrip -public open class JavascriptException(jsStackTrace: String) : - RuntimeException(jsStackTrace), HasJavascriptExceptionMetadata { - private var extraDataAsJson: String? = null - - override fun getExtraDataAsJson(): String? = extraDataAsJson - - public fun setExtraDataAsJson(extraDataAsJson: String?): JavascriptException { - this.extraDataAsJson = extraDataAsJson - return this - } +public open class JavascriptException(jsStackTrace: String) : RuntimeException(jsStackTrace) { + public var extraDataAsJson: String? = null } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/core/ExceptionsManagerModule.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/core/ExceptionsManagerModule.java index afe1c1819d8..a0a18d77bc4 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/core/ExceptionsManagerModule.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/core/ExceptionsManagerModule.java @@ -62,8 +62,9 @@ public class ExceptionsManagerModule extends NativeExceptionsManagerSpec { String extraDataAsJson = ExceptionDataHelper.getExtraDataAsJson(data); if (isFatal) { - throw new JavascriptException(JSStackTrace.format(message, stack)) - .setExtraDataAsJson(extraDataAsJson); + JavascriptException ex = new JavascriptException(JSStackTrace.format(message, stack)); + ex.setExtraDataAsJson(extraDataAsJson); + throw ex; } else { FLog.e(ReactConstants.TAG, JSStackTrace.format(message, stack)); if (extraDataAsJson != null) { diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.java index 5f0432e24d4..06d0fadfc1c 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.java @@ -924,14 +924,8 @@ public class ReactHostImpl implements ReactHost { String callingMethod, String message, @Nullable Throwable throwable) { final String method = "raiseSoftException(" + callingMethod + ")"; log(method, message); - if (throwable != null) { - ReactSoftExceptionLogger.logSoftException( - TAG, new ReactNoCrashSoftException(method + ": " + message, throwable)); - return; - } - ReactSoftExceptionLogger.logSoftException( - TAG, new ReactNoCrashSoftException(method + ": " + message)); + TAG, new ReactNoCrashSoftException(method + ": " + message, throwable)); } private Executor getDefaultReactInstanceExecutor() {