Przeglądaj źródła

Merge pull request #198 from NSExceptional/exception-pr

Reveal exception reason in dialog
Ryan Olson 8 lat temu
rodzic
commit
505bb2ca41
1 zmienionych plików z 13 dodań i 2 usunięć
  1. 13 2
      Classes/Utility/FLEXRuntimeUtility.m

+ 13 - 2
Classes/Utility/FLEXRuntimeUtility.m

@@ -375,8 +375,19 @@ const unsigned int kFLEXNumberOfImplicitArgs = 2;
     } @catch (NSException *exception) {
         // Bummer...
         if (error) {
-            NSDictionary<NSString *, id> *userInfo = @{ NSLocalizedDescriptionKey : [NSString stringWithFormat:@"Exception thrown while performing selector %@ on object %@", NSStringFromSelector(selector), object]};
-            *error = [NSError errorWithDomain:FLEXRuntimeUtilityErrorDomain code:FLEXRuntimeUtilityErrorCodeInvocationFailed userInfo:userInfo];
+            // "… on <class>" / "… on instance of <class>"
+            NSString *class = NSStringFromClass([object class]);
+            NSString *calledOn = object == [object class] ? class : [@"an instance of " stringByAppendingString:class];
+
+            NSString *message = [NSString stringWithFormat:@"Exception '%@' thrown while performing selector '%@' on %@.\nReason:\n\n%@",
+                                 exception.name,
+                                 NSStringFromSelector(selector),
+                                 calledOn,
+                                 exception.reason];
+
+            *error = [NSError errorWithDomain:FLEXRuntimeUtilityErrorDomain
+                                         code:FLEXRuntimeUtilityErrorCodeInvocationFailed
+                                     userInfo:@{ NSLocalizedDescriptionKey : message }];
         }
     }