Skip to main content

iPhone - How to handle errors at runtime



When writing code, there are many situations that must be treated as runtime errors : an alloc/init returns nil, a resource is not found, a [someClass canDoThis] returns NO for an absolutely-needed feature where YES would be the natural answer, ...





For all these situations, I have written an exitWithMessage routine (that displays an alert box), and each class has a kill method that frees allocated memory.





So... When in an init method, you have these kind of exceptions, I supposed you could do :







[self kill];

[OneClass exitWithFatalErrorMessage];

return nil;



- (void) exitWithFatalErrorMessage:(NSString*)message

{

UIAlertView* alert = [[UIAlertView alloc] initWithTitle:NSLocalizedStringFromTable(@"Error" @"ErrorMessages", @"") message:message delegate:self cancelButtonTitle:NSLocalizedStringFromTable(@"Understood", @"ErrorMessages", @"") otherButtonTitles: nil];

[alert show];

[alert release];

}



- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex

{

// stop the normal running of the app, there is a situation that would prevent it

}



- (void)kill

{

self.member = nil;

self.member2 = nil;

...

}







But this does not work... My alert is not displayed (the exitWithMessage works fine when used anywhere else than into an init method.





How would you handle those cases ? Is this piece of coding a fine way to do ?


If yes, why does my alert do not display (I'm into a view controller initWithCoder method for the example) ?


Comments

  1. Are you actually calling the exitWithFatalErrorMessage method, because in your code you call exitWithMessage instead, try changing it to this:

    [OneClass exitWithFatalErrorMessage:@"Message"];

    ReplyDelete

Post a Comment