iphone dev - как отловить исключение 'NSRangeException' - PullRequest
6 голосов
/ 19 мая 2010

В моем приложении я пытаюсь прокрутить UITableView к вершине один раз после того, как я обновил содержимое таблицы. Тем не менее, при некоторых обстоятельствах мой стол пуст. Итак, я получил следующее исключение:

Завершение работы приложения из-за необработанного исключения «NSRangeException», причина: '- [UITableView scrollToRowAtIndexPath: atScrollPosition: animated:]: строка (0) за пределами (0) для раздела (0).'

как я могу поймать это исключение? Я пытался

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];

if (indexPath != nil) {
    [EventTable scrollToRowAtIndexPath:indexPath
                atScrollPosition:UITableViewScrollPositionTop animated:YES];
}

но исключение не выдается, потому что indexPath не равен nil.

Ответы [ 2 ]

12 голосов
/ 19 мая 2010

Перед прокруткой к IndexPath проверьте свой UITableView, чтобы убедиться, что строка и раздел, на который вы пытаетесь прокрутить, меньше, чем количество строк и разделов в вашей таблице, соответственно. Если это так, не пытайтесь перейти к этому IndexPath.

if ( [tableView numberOfSections] < section || [tableView numberOfRowsInSection] < row )
6 голосов
/ 19 мая 2010

Обработка исключений происходит не так, как ваши обычные выражения управления потоком. Apple написала полезную статью о Обработка исключений Objective-C . По сути, вы захотите обернуть ваш код в блоки @try / @catch. Он находится в блоке @catch, где вы получите исключение и выполните соответствующие следующие шаги в своем коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...