diff --git a/Libraries/JavaScriptAppEngine/Initialization/ExceptionsManager.js b/Libraries/JavaScriptAppEngine/Initialization/ExceptionsManager.js index ff2383a4c..70683ee49 100644 --- a/Libraries/JavaScriptAppEngine/Initialization/ExceptionsManager.js +++ b/Libraries/JavaScriptAppEngine/Initialization/ExceptionsManager.js @@ -25,13 +25,16 @@ type Exception = { message: string; } +var exceptionID = 0; + function reportException(e: Exception, isFatal: bool, stack?: any) { + var currentExceptionID = ++exceptionID; if (RCTExceptionsManager) { if (!stack) { stack = parseErrorStack(e); } if (isFatal) { - RCTExceptionsManager.reportFatalException(e.message, stack); + RCTExceptionsManager.reportFatalException(e.message, stack, currentExceptionID); } else { RCTExceptionsManager.reportSoftException(e.message, stack); } @@ -39,7 +42,7 @@ function reportException(e: Exception, isFatal: bool, stack?: any) { (sourceMapPromise = sourceMapPromise || loadSourceMap()) .then(map => { var prettyStack = parseErrorStack(e, map); - RCTExceptionsManager.updateExceptionMessage(e.message, prettyStack); + RCTExceptionsManager.updateExceptionMessage(e.message, prettyStack, currentExceptionID); }) .catch(error => { // This can happen in a variety of normal situations, such as diff --git a/React/Modules/RCTExceptionsManager.m b/React/Modules/RCTExceptionsManager.m index 2894fac2c..b353420f8 100644 --- a/React/Modules/RCTExceptionsManager.m +++ b/React/Modules/RCTExceptionsManager.m @@ -48,7 +48,8 @@ RCT_EXPORT_METHOD(reportSoftException:(NSString *)message } RCT_EXPORT_METHOD(reportFatalException:(NSString *)message - stack:(NSArray *)stack) + stack:(NSArray *)stack + exceptionId:(__unused NSNumber *)exceptionId) { if (_delegate) { [_delegate handleFatalJSExceptionWithMessage:message stack:stack]; @@ -86,7 +87,8 @@ RCT_EXPORT_METHOD(reportFatalException:(NSString *)message } RCT_EXPORT_METHOD(updateExceptionMessage:(NSString *)message - stack:(NSArray *)stack) + stack:(NSArray *)stack + exceptionId:(__unused NSNumber *)exceptionId) { if (_delegate) { [_delegate updateJSExceptionWithMessage:message stack:stack]; @@ -100,6 +102,6 @@ RCT_EXPORT_METHOD(updateExceptionMessage:(NSString *)message RCT_EXPORT_METHOD(reportUnhandledException:(NSString *)message stack:(NSArray *)stack) { - [self reportFatalException:message stack:stack]; + [self reportFatalException:message stack:stack exceptionId:nil]; } @end