Objective-C异常没有抛出

时间:2011-05-19 08:57:41

标签: objective-c exception nsarray

我的代码中遇到了一个奇怪的问题。

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 :(得分:0)

NSApplication中的异常通常不会导致崩溃;但它没有登录到控制台当然很奇怪。

除此之外,当然;事实上,如果抛出异常,你可能可能做错了事;或至少未能对输入进行适当的范围和价值检查;或者,在上面的例子中:

NSObject *object = nil;

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