mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
4/n Display a RedBox with the JS stack (instead of native stack) when an unhandled JS exceptions occurs
Summary: Changelog: [iOS][Changed] Display a RedBox with the JS stack (instead of native stack) when an unhandled JS exceptions occurs ----- # A0) Bridge mode, Unhandled Exception, FBiOS Unhandled exception goes to FBReactModule, but the JS Stack is not parsed correctly. https://www.internalfb.com/code/fbsource/[312d5cbdd7278247a84619786b12a44c4400fcc0]/fbobjc/Apps/Wilde/FBReactModule2/FBReactModuleAPI/FBReactModuleAPI/Exported/FBReactModule.mm?lines=1488%2C1493 See `****** FBReactModule handleFatalError` in the logs P539306390, and compare with correct behavior in (A1) in the Test Plan. https://pxl.cl/2h6h3 {F782257996} ----- # A) Before diff, rn-tester Open to rn-tester -> APIs -> Crash Examples -> JS Crash. Set `RCTParseUnhandledJSErrorStackNatively` to YES. https://www.internalfb.com/code/fbsource/[98880e52ee78be3614e5d9a2ce3292f6a7b5e413]/xplat/js/react-native-github/React/Base/RCTConstants.m?lines=73 {F783395297} Reviewed By: sammy-SC Differential Revision: D40387938 fbshipit-source-id: 2abea657476d3bf61ad5b1c643f129e44c6f3f35
This commit is contained in:
committed by
Facebook GitHub Bot
parent
466ba91657
commit
ff398e4e26
@@ -17,8 +17,10 @@ namespace react {
|
||||
|
||||
using facebook::react::JSErrorHandlerKey;
|
||||
|
||||
static MapBuffer
|
||||
parseErrorStack(const jsi::JSError &error, bool isFatal, bool isHermes) {
|
||||
MapBuffer JsErrorHandler::parseErrorStack(
|
||||
const jsi::JSError &error,
|
||||
bool isFatal,
|
||||
bool isHermes) {
|
||||
/**
|
||||
* This parses the different stack traces and puts them into one format
|
||||
* This borrows heavily from TraceKit (https://github.com/occ/TraceKit)
|
||||
@@ -99,7 +101,7 @@ JsErrorHandler::~JsErrorHandler() {}
|
||||
void JsErrorHandler::handleJsError(const jsi::JSError &error, bool isFatal) {
|
||||
// TODO: Current error parsing works and is stable. Can investigate using
|
||||
// REGEX_HERMES to get additional Hermes data, though it requires JS setup.
|
||||
MapBuffer errorMap = parseErrorStack(error, isFatal, false);
|
||||
MapBuffer errorMap = JsErrorHandler::parseErrorStack(error, isFatal, false);
|
||||
_jsErrorHandlingFunc(std::move(errorMap));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user