objective-c没有在try / catch块中捕获异常

时间:2016-03-11 11:47:15

标签: ios objective-c exception try-catch

我在try / catch块中有这个语句,但是异常永远不会被捕获。实际上,抛出的任何异常都不会被捕获。 任何人都可以帮助我吗?

xcode项目中是否禁用了禁用捕获异常的设置?

NSString *test = @"test";
unichar a;
int index = 5;

@try {
    a = [test characterAtIndex:index];
}
@catch (NSException *exception) {
    NSLog(@"%@", exception.reason);
}
@finally {
    NSLog(@"Char at index %d cannot be found", index);
    NSLog(@"Max index is: %lu", [test length]-1);
}
  

*由于未捕获的异常'NSRangeException'而终止应用程序,原因:' - [__ NSCFConstantString characterAtIndex:]:范围或索引输出   边界'   * 第一次抛出调用堆栈:(0x1832ad900 0x18291bf80 0x1832ad848 0x1831a52f0 0x100249340 0x188015704 0x188244130 0x1882484b8   0x1882455c0 0x184863790 0x184863b10 0x183264efc 0x183264990   0x183262690 0x183191680 0x18800e580 0x188008d90 0x10017662c   0x182d328b8)libc ++ abi.dylib:以未捕获的异常终止   输入NSException

3 个答案:

答案 0 :(得分:1)

在我的情况下,有一个其他Liker Flag -Wl,-no_compact_unwind 我项目的构建设置。

我删除它,然后解决问题。

Pic

答案 1 :(得分:0)

您可以转到build settings - > Enable Objective-C Exceptions

它应该解决问题。

enter image description here

答案 2 :(得分:0)

使用物理设备代替模拟器。

请注意 - https://gist.github.com/johndpope/89c00eccbdd6e87720724dabd82b8774