Respond on exceptions thrown when on main thread
Summary: Changes FlipperPerformBlockOnMainThread to take a responder, and respond with an error if an exception is caught. Reviewed By: passy Differential Revision: D14066982 fbshipit-source-id: 70135bf58171684bcd013c66d9deec366aed36f5
This commit is contained in:
committed by
Facebook Github Bot
parent
c0b5f10693
commit
9b6db1f482
@@ -7,12 +7,27 @@
|
||||
*/
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "FlipperPlugin.h"
|
||||
#import "FlipperResponder.h"
|
||||
|
||||
void FlipperPerformBlockOnMainThread(void(^block)())
|
||||
void FlipperPerformBlockOnMainThread(void(^block)(), id<FlipperResponder> responder)
|
||||
{
|
||||
if ([NSThread isMainThread]) {
|
||||
block();
|
||||
@try {
|
||||
block();
|
||||
} @catch (NSException *e) {
|
||||
[responder error:@{@"name": e.name, @"message": e.reason}];
|
||||
} @catch (...) {
|
||||
[responder error:@{@"name": @"Unknown", @"message": @"Unknown error caught when processing operation on main thread"}];
|
||||
}
|
||||
} else {
|
||||
dispatch_async(dispatch_get_main_queue(), block);
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
@try {
|
||||
block();
|
||||
} @catch (NSException *e) {
|
||||
[responder error:@{@"name": e.name, @"message": e.reason}];
|
||||
} @catch (...) {
|
||||
[responder error:@{@"name": @"Unknown", @"message": @"Unknown error caught when processing operation on main thread"}];
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user