Objective-C Исключение не выброшен - PullRequest
0 голосов
/ 19 мая 2011

Я столкнулся со странной проблемой в своем коде.

NSMutableArray *array = [[NSMutableArray alloc] init];
.
.
.
(added some objects into the array)
.
.
.
[array removeAllObjects];

NSObject *object = [array objectAtIndex:0];

Независимо от того, запускаю ли я его в режиме отладки или выпуска, он не вылетает и не выдает никаких исключений в консоли, а "ломает"текущий кадр и сразу перейти к следующему кадру.

если я поймаю исключение самостоятельно

@try {
    NSObject *object = [pathList objectAtIndex:0]];
}
@catch (NSException * e) {
    ERR_HERE();
}

действительно существует исключение NSRangeException.

Это опасно для меня, поскольку яне знаю, когда мое приложение пойдет не так.Я только иногда обнаруживал эту проблему.

Почему это произошло, а не сбой с сообщением об исключении?

1 Ответ

0 голосов
/ 19 мая 2011

Исключения в NSApplication обычно не приводят к сбою; но то, что он не вошел в консоль, конечно, странно.

Помимо этого, конечно; есть тот факт, что если выдается исключение, вы , вероятно, делаете что-то не так; или, по крайней мере, не в состоянии сделать правильный диапазон и проверки значений для ввода; или в приведенном выше примере:

NSObject *object = nil;

if ([array count])
  object = [array objectAtIndex:0];
...