用 Swift 方式捕获 Objective-C 异常:概念演示

Swift 异常桥接:概念演示

免责声明

我个人很欣赏 Swift 没有异常的设计,并且期待未来能有更优雅的错误处理方式。 我并不鼓励在 Swift 中使用异常。 默认情况下,Swift 代码不会启用异常 (您可以使用 clang 编译选项 -fobjc-arc-exceptions 来开启)。

然而,有时在使用 Cocoa 框架时,我们无法避免异常的抛出 (例如 NSTaskNSFileHandle、KVO 等)。 目前 Swift 还不支持直接捕获这些异常。

这个项目是一个快速原型,尚未准备好用于生产环境。它包含一个完整的 Xcode 项目,其中包含所有 Swift 和 Objective-C 代码。

建议的解决方案

@interface JFWSwiftExceptionBridge : NSObject
+ (void)swiftBridgeTry:(void(^)(void))tryBlock except:(void(^)(NSException *exception))exceptBlock;
@end
zip 文件大小:7.37KB