Display JS component stack in native view exceptions

Reviewed By: mdvacca

Differential Revision: D7578033

fbshipit-source-id: 4dc393cddf8487db58cc3a9fefbff220983ba9da
This commit is contained in:
Andrew Chen (Eng)
2018-04-17 17:17:12 -07:00
committed by Facebook Github Bot
parent c4ab03a18e
commit ff9b3c6517
7 changed files with 102 additions and 115 deletions

View File

@@ -42,11 +42,11 @@ import com.facebook.react.modules.deviceinfo.DeviceInfoModule;
import com.facebook.react.uimanager.DisplayMetricsHolder;
import com.facebook.react.uimanager.IllegalViewOperationException;
import com.facebook.react.uimanager.JSTouchDispatcher;
import com.facebook.react.uimanager.common.MeasureSpecProvider;
import com.facebook.react.uimanager.PixelUtil;
import com.facebook.react.uimanager.RootView;
import com.facebook.react.uimanager.common.SizeMonitoringFrameLayout;
import com.facebook.react.uimanager.UIManagerModule;
import com.facebook.react.uimanager.common.MeasureSpecProvider;
import com.facebook.react.uimanager.common.SizeMonitoringFrameLayout;
import com.facebook.react.uimanager.events.EventDispatcher;
import com.facebook.systrace.Systrace;
import javax.annotation.Nullable;
@@ -572,18 +572,13 @@ public class ReactRootView extends SizeMonitoringFrameLayout
}
@Override
public void handleException(Throwable t) {
public void handleException(final Throwable t) {
if (mReactInstanceManager == null
|| mReactInstanceManager.getCurrentReactContext() == null) {
throw new RuntimeException(t);
}
// Adding special exception management for StackOverflowError for logging purposes.
// This will be removed in the future.
Exception e = (t instanceof StackOverflowError) ?
new IllegalViewOperationException("StackOverflowException", this, t) :
t instanceof Exception ? (Exception) t : new RuntimeException(t);
Exception e = new IllegalViewOperationException(t.getMessage(), this, t);
mReactInstanceManager.getCurrentReactContext().handleException(e);
}