Skip to content

Commit

Permalink
Exceptions in NSError's fullDescription.
Browse files Browse the repository at this point in the history
[ADDED]     -[NSError fullDescription] now outputs causal exceptions.
  • Loading branch information
lhunath committed Feb 22, 2014
1 parent 5c12bd2 commit 081c2de
Showing 1 changed file with 9 additions and 7 deletions.
16 changes: 9 additions & 7 deletions Pearl/NSError+PearlFullDescription.m
Expand Up @@ -12,31 +12,33 @@ @implementation NSError (PearlFullDescription)
- (NSString *)fullDescription {

NSMutableString *fullDescription = [NSMutableString new];
[fullDescription appendFormat:@"Error: %d (%@): %@\n", self.code, self.domain, self.localizedDescription];
[fullDescription appendFormat:@"Error: %lu (%@): %@\n", (long)self.code, self.domain, self.localizedDescription];
if (self.localizedRecoveryOptions)
[fullDescription appendFormat:@" - RecoveryOptions: %@\n", self.localizedRecoveryOptions];
[fullDescription appendFormat:@" - RecoveryOptions: %@\n", self.localizedRecoveryOptions];
if (self.localizedRecoverySuggestion)
[fullDescription appendFormat:@" - RecoverySuggestion: %@\n", self.localizedRecoverySuggestion];
[fullDescription appendFormat:@" - RecoverySuggestion: %@\n", self.localizedRecoverySuggestion];
if (self.localizedFailureReason)
[fullDescription appendFormat:@" - FailureReason: %@\n", self.localizedFailureReason];
[fullDescription appendFormat:@" - FailureReason: %@\n", self.localizedFailureReason];
if (self.helpAnchor)
[fullDescription appendFormat:@" - HelpAnchor: %@\n", self.helpAnchor];
[fullDescription appendFormat:@" - HelpAnchor: %@\n", self.helpAnchor];
if (self.userInfo) {
for (id key in self.userInfo) {
id info = self.userInfo[key];
NSMutableString *infoString;
if ([info respondsToSelector:@selector(fullDescription)])
infoString = [[info fullDescription] mutableCopy];
else if ([info isKindOfClass:[NSException class]])
infoString = [NSMutableString stringWithFormat:@"%@: %@ %@", [info name], [info reason], [info userInfo]];
else if ([info respondsToSelector:@selector(debugDescription)])
infoString = [[info debugDescription] mutableCopy];
else
infoString = [[info description] mutableCopy];

NSString *keyString = [NSString stringWithFormat:@" - Info %@: ", key];
NSString *keyString = [NSString stringWithFormat:@" - Info %@: [%@] ", key, [info class]];
NSString *indentedNewline = [@"\n" stringByPaddingToLength:[keyString length] + 1
withString:@" " startingAtIndex:0];
[infoString replaceOccurrencesOfString:@"\n" withString:indentedNewline options:0
range:NSMakeRange(0, [infoString length])];
range:NSMakeRange( 0, [infoString length] )];
[fullDescription appendString:keyString];
[fullDescription appendString:infoString];
[fullDescription appendString:@"\n"];
Expand Down

0 comments on commit 081c2de

Please sign in to comment.