【发布时间】:2017-03-15 02:36:04
【问题描述】:
我在我的 swift 代码库中使用了一个 Objective-c 库。库可能会抛出异常。不幸的是,Swift 3 中没有捕获到异常。我该如何解决这个问题?
【问题讨论】:
-
你能显示你正在使用的代码吗?
标签: try-catch swift3 throw nsexception
我在我的 swift 代码库中使用了一个 Objective-c 库。库可能会抛出异常。不幸的是,Swift 3 中没有捕获到异常。我该如何解决这个问题?
【问题讨论】:
标签: try-catch swift3 throw nsexception
一般来说,使用 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:。
【讨论】: