开发者

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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜