NoExceptions
这是一个为 Swift 代码提供捕获 NSException
能力的库。
这对于 Swift 标准的 try
和 catch
机制不能捕获从 Objective-C 中抛出的 NSException
来说是很有用的。
语法
假设有一个可以抛出 NSException
实例的 Objective-C 方法,如下所示的 MyClass
示例,下面另一个示例将允许在 Swift 的 Error
类型中捕获异常。
@interface MyClass: NSObject
- (void)throwingMethod;
- (id)throwingGetter;
@end
try? trapping(trappable: myObject.throwingMethod)
try? trapping { myObject.throwingMethod() }
let foo = try? trapping { myObject.throwingGetter() }
try? trapping { let bar = myObject.throwingGetter() }
let baz = try? trapping(trappable: myObject.throwingGetter)
do {
try trapping { myObject.throwingMethod() }
let variable = try trapping { myObject.throwingGetter() }
try trapping { let bar = myObject.throwingGetter() }
}
catch error as NSExceptionError {
/// handle error containing exception
}