【问题标题】:NSInvalidArgumentException not being caught in codeNSInvalidArgumentException 未在代码中捕获
【发布时间】:2011-09-18 17:29:09
【问题描述】:

我正在使用选择器来动态调用 Objective-C 中的函数。我的问题是如果我传递一个不存在的函数名,我的 @try/@catch 块不会捕获异常。

在控制台中,我得到一个未捕获的NSInvalidArgumentException,再往下,我得到一个未捕获的NSException

我尝试在标准 @try/@catch 块中捕获这两种类型的异常,但它们没有注册。如果我尝试捕捉 NSInvalidArgumentException,Xcode 不会让我编译,因为它不是可识别的类型。

关于如何解决这个问题的任何想法?

@try {
    SEL s = NSSelectorFromString(@"funName");
    [self performSelector:s withObject: nil];
} 
@catch (NSException/NSInvalidArgumentException exception) {
     NSLog(@"ERROR: %@", [exception message/reason];
} 

【问题讨论】:

  • 当然,没问题。抱歉,我没有第一次添加代码。

标签: objective-c ios exception-handling try-catch nsexception


【解决方案1】:

许多人认为这是一个错误。

http://openradar.appspot.com/8081169

通过测试类似的代码,我可以让它在设备上运行,但不能在模拟器中运行。

【讨论】:

  • 呃,这对我来说似乎根本不起作用 :( 你试过上面的代码吗?谢谢你的输入。
  • @Conor H - 这是对您问题的回答 - 这是模拟器中的错误,建议您提交错误。你在设备上试过这个鳕鱼吗?
  • 谢谢各位,我还不能尝试这个,因为 iPad 不在办公室,但我会将此标记为已回答。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-09-23
  • 1970-01-01
  • 1970-01-01
  • 2019-01-24
  • 1970-01-01
  • 2018-08-16
  • 1970-01-01
相关资源
最近更新 更多