Catch the exception thrown from Squirrel
authorCheng Zhao <zcbenz@gmail.com>
Wed, 25 Mar 2015 11:59:36 +0000 (19:59 +0800)
committerCheng Zhao <zcbenz@gmail.com>
Wed, 25 Mar 2015 11:59:36 +0000 (19:59 +0800)
atom/browser/auto_updater_mac.mm

index ace46a6..f0a18b5 100644 (file)
@@ -36,14 +36,20 @@ void RelaunchToInstallUpdate() {
 // static
 void AutoUpdater::SetFeedURL(const std::string& feed) {
   if (g_updater == nil) {
+    AutoUpdaterDelegate* delegate = GetDelegate();
+    if (!delegate)
+      return;
+
     // Initialize the SQRLUpdater.
     NSURL* url = [NSURL URLWithString:base::SysUTF8ToNSString(feed)];
     NSURLRequest* urlRequest = [NSURLRequest requestWithURL:url];
-    g_updater = [[SQRLUpdater alloc] initWithUpdateRequest:urlRequest];
 
-    AutoUpdaterDelegate* delegate = GetDelegate();
-    if (!delegate)
+    @try {
+      g_updater = [[SQRLUpdater alloc] initWithUpdateRequest:urlRequest];
+    } @catch (NSException* error) {
+      delegate->OnError(base::SysNSStringToUTF8(error.reason));
       return;
+    }
 
     [[g_updater rac_valuesForKeyPath:@"state" observer:g_updater]
       subscribeNext:^(NSNumber *stateNumber) {