@@ -124,22 +124,10 @@ void RCTFatal(NSError *error)
124124 if (fatalHandler) {
125125 fatalHandler (error);
126126 } else {
127- const NSUInteger maxMessageLength = 75 ;
128- NSString *message = [error localizedDescription ];
129- if (message.length > maxMessageLength) {
130- message = [[message substringToIndex: maxMessageLength] stringByAppendingString: @" ..." ];
131- }
132-
133- NSMutableString *prettyStack = [NSMutableString stringWithString: @" \n " ];
134- if ([error.userInfo[RCTJSStackTraceKey] isKindOfClass: [NSArray class ]]) {
135- for (NSDictionary *frame in error.userInfo [RCTJSStackTraceKey]) {
136- [prettyStack appendFormat: @" %@ @%@ :%@ \n " , frame[@" methodName" ], frame[@" lineNumber" ], frame[@" column" ]];
137- }
138- }
139-
140127#if DEBUG
141128 @try {
142129#endif
130+ NSString *message = RCTFormatError ([error localizedDescription ], error.userInfo [RCTJSStackTraceKey], 75 );
143131 [NSException raise: @" RCTFatalException" format: @" %@ " , message];
144132#if DEBUG
145133 } @catch (NSException *e) {}
@@ -156,3 +144,20 @@ RCTFatalHandler RCTGetFatalHandler(void)
156144{
157145 return RCTCurrentFatalHandler;
158146}
147+
148+ NSString *RCTFormatError (NSString *message, NSArray *stackTrace, NSUInteger maxMessageLength)
149+ {
150+ if (maxMessageLength > 0 && message.length > maxMessageLength) {
151+ message = [[message substringToIndex: maxMessageLength] stringByAppendingString: @" ..." ];
152+ }
153+
154+ NSMutableString *prettyStack = [NSMutableString string ];
155+ if (stackTrace) {
156+ [prettyStack appendString: @" , stack:\n " ];
157+ for (NSDictionary *frame in stackTrace) {
158+ [prettyStack appendFormat: @" %@ @%@ :%@ \n " , frame[@" methodName" ], frame[@" lineNumber" ], frame[@" column" ]];
159+ }
160+ }
161+
162+ return [NSString stringWithFormat: @" Message: %@%@ " , message, prettyStack];
163+ }
0 commit comments