【问题标题】:objective-c not catching exception in try/catch blockObjective-c 没有在 try/catch 块中捕获异常
【发布时间】:2016-06-26 15:43:32
【问题描述】:

我在 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:]: Range or index out 有界' * 第一次抛出调用栈:(0x1832ad900 0x18291bf80 0x1832ad848 0x1831a52f0 0x100249340 0x188015704 0x188244130 0x1882484b8 0x1882455c0 0x184863790 0x184863b10 0x183264efc 0x183264990 0x183262690 0x183191680 0x18800e580 0x188008d90 0x10017662c 0x182d328b8) libc++abi.dylib: 以未捕获的异常终止 输入 NSException

【问题讨论】:

  • 你能显示崩溃日志吗?
  • @UlyssesR 我添加了日志
  • 我已经复制了你的代码,它没有崩溃(正确捕获异常)
  • 我知道@DAN。我尝试创建一个新项目并在那里插入该代码并捕获了异常。这就是为什么我问项目设置中是否有任何可能被禁用或类似的东西,因为我真的不知道为什么它不起作用。
  • 顺便说一句,如果您在 Objective-C 代码中捕获异常,那么您做错了。

标签: ios objective-c exception try-catch


【解决方案1】:

在我的例子中,有一个 Other Liker Flag -Wl,-no_compact_unwind in 我的项目的构建设置。

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

【讨论】:

【解决方案2】:

你可以去build settings -> Enable Objective-C Exceptions

应该能解决问题。

【讨论】:

  • 我有。如果我尝试将其设置为 NO,我什至无法编译项目,因为 try catch 块显示错误。
  • 我无法复制您的问题,您是否有某种特殊设置或使用旧版本的 Xcode?​​span>
  • 不,我使用的是当前版本的 Xcode,据我所知,我没有特殊设置。我不明白问题可能是什么。
  • 不,在一个新项目中我没有这个错误。它工作正常。
猜你喜欢
  • 1970-01-01
  • 2019-07-12
  • 2019-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-26
相关资源
最近更新 更多