Skip to content

Commit 9a57145

Browse files
motiz88facebook-github-bot
authored andcommitted
Implement RCTExceptionsManager.reportException on iOS
Summary: Implements the new `reportException` method in the iOS version of `ExceptionsManager`. Reviewed By: sammy-SC Differential Revision: D17226365 fbshipit-source-id: baa81424399175eaf8fc0835d4df01897e7fa468
1 parent 850a835 commit 9a57145

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

React/CoreModules/RCTExceptionsManager.mm

+27
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,34 @@ - (instancetype)initWithDelegate:(id<RCTExceptionsManagerDelegate>)delegate
9191

9292
RCT_EXPORT_METHOD(reportException:(JS::NativeExceptionsManager::ExceptionData &)data)
9393
{
94+
NSString *message = data.message();
95+
double exceptionId = data.id_();
96+
97+
// Reserialize data.stack() into an array of untyped dictionaries.
98+
// TODO: (moti) T53588496 Replace `(NSArray<NSDictionary *> *)stack` in
99+
// reportFatalException etc with a typed interface.
100+
NSMutableArray<NSDictionary *> *stackArray = [NSMutableArray<NSDictionary *> new];
101+
for (auto frame: data.stack()) {
102+
NSMutableDictionary * frameDict = [NSMutableDictionary new];
103+
if (frame.column().hasValue()) {
104+
frameDict[@"column"] = @(frame.column().value());
105+
}
106+
frameDict[@"file"] = frame.file();
107+
if (frame.lineNumber().hasValue()) {
108+
frameDict[@"lineNumber"] = @(frame.lineNumber().value());
109+
}
110+
frameDict[@"methodName"] = frame.methodName();
111+
if (frame.collapse().hasValue()) {
112+
frameDict[@"collapse"] = @(frame.collapse().value());
113+
}
114+
[stackArray addObject:frameDict];
115+
}
94116

117+
if (data.isFatal()) {
118+
[self reportFatalException:message stack:stackArray exceptionId:exceptionId];
119+
} else {
120+
[self reportSoftException:message stack:stackArray exceptionId:exceptionId];
121+
}
95122
}
96123

97124
- (std::shared_ptr<facebook::react::TurboModule>)getTurboModuleWithJsInvoker:

0 commit comments

Comments
 (0)