【问题标题】:Objective-C Exception not thrown未抛出 Objective-C 异常
【发布时间】:2011-05-19 08:57:40
【问题描述】:

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

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

NSObject *object = [array objectAtIndex:0];

无论我在Debug还是Release模式下运行,它都没有崩溃并在控制台中抛出任何异常而是“中断”当前帧并直接进入下一帧。

如果我自己发现异常

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

确实存在 NSRangeException。

这对我来说很危险,因为我不知道我的应用程序何时会出错。 我只是偶尔发现这个问题。

为什么会发生这种情况,但不会发生带有异常消息的崩溃?

【问题讨论】:

  • objectAtIndeo 只是一个错字吗?

标签: objective-c exception nsarray


【解决方案1】:

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

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

NSObject *object = nil;

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

【讨论】:

    猜你喜欢
    • 2010-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-17
    • 1970-01-01
    相关资源
    最近更新 更多