【问题标题】:objective-c exceptions not caught in swift 3 do catch handlerswift 3 中未捕获的objective-c 异常确实捕获处理程序
【发布时间】:2017-03-15 02:36:04
【问题描述】:

我在我的 swift 代码库中使用了一个 Objective-c 库。库可能会抛出异常。不幸的是,Swift 3 中没有捕获到异常。我该如何解决这个问题?

【问题讨论】:

  • 你能显示你正在使用的代码吗?

标签: try-catch swift3 throw nsexception


【解决方案1】:

一般来说,使用 Objective-C 异常处理不是一个好主意,但有时它是必要的。 ;)

Swift 异常处理与 Objective-C 完全不同。您不能直接在 Swift 中捕获 Objective-C 异常。相反,您应该编写一个 Objective-C 包装器,例如。 g.:

@implementation NSDictionary(NoException)

- (id)noExceptionValueForKey:(NSString *)inKey {
    @try {
        return [self valueForKey:inKey];
    }
    @catch(NSException *anException) {
        // More exception handling if neccessary
        return nil;
    }
}

@end

在 Swift 中,您应该调用 noExceptionValueForKey: 而不是 valueForKey:

【讨论】:

  • 那么这是否意味着在这个时间点上,为 iOS 编写一个纯 Swift 应用程序实际上是不可能的?
  • @Jules:不幸的是,对于一些罕见的问题,您需要 Objective C。捕获 Objective C 异常就是其中之一。
猜你喜欢
  • 1970-01-01
  • 2016-05-09
  • 1970-01-01
  • 1970-01-01
  • 2014-09-02
  • 2015-09-10
  • 2017-05-10
  • 2016-12-08
  • 2018-05-30
相关资源
最近更新 更多