Whilst programming in Objective-C I've occasionally had methods throw an exception that I wasn't expecting.
With the benefit of hindsight I can see why it would throw an exception and, often, addressing the issue leads to better code.
However, it would be handy to know, ahead of time, what methods will throw an exception and under what circumstances.
For example:
NSString *aString;
aString = @"Less than 42 characters.";
[aString substringToIndex:42];
would throw an exception as the string contains less than 42 characters.
Also this:
NSString *aString = @"This is a string.";
NSString *bString = nil;
aString = [NSString stringByAppendingString:bString];
will similarly crash as bString is nil.
Any other examples?