iphone dev - how to catch exception 'NSRangeException'
In my app I try to scroll a UITableView to the top once after I updated the content of the table. However, under som开发者_开发知识库e circumstance, my table is EMPTY. So I got the following exception:
Terminating app due to uncaught exception 'NSRangeException', reason: '-[UITableView scrollToRowAtIndexPath:atScrollPosition:animated:]: row (0) beyond bounds (0) for section (0).'
how can I catch this exception? I tried
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
if (indexPath != nil) {
[EventTable scrollToRowAtIndexPath:indexPath
atScrollPosition:UITableViewScrollPositionTop animated:YES];
}
but it doesn't catch the exception because indexPath is not nil.
Before scrolling to an IndexPath, check your UITableView to make sure the row and section you're trying to scroll to are less than the number of rows and section in your table, respectively. If so, do not try to scroll to that IndexPath.
if ( [tableView numberOfSections] < section || [tableView numberOfRowsInSection] < row )
Exception handling takes a different path than your typical flow control expressions. Apple has written up a useful article on Objective-C Exception Handling. Essentially you'll want to wrap your code in @try
/@catch
blocks. It is in the @catch
block where you will receive the exception and perform the appropriate next steps in your code.
精彩评论