【发布时间】:2015-06-09 19:21:31
【问题描述】:
似乎 Swift 2.0 已经从传统的 ObjC(返回 NSError)和 Swift 1.X(成功/失败可选)约定运行时错误处理,变成了与 Java/C#/ 等语言中的异常处理非常相似的东西C++/等。
Apple 传统上使用 emphasized use of NSError instead of throwing NSException for runtime errors(与程序员错误相比),因为 NSException 堆栈展开可能会导致默认 ObjC 编译器设置的内存泄漏。
然而,现在他们设计了一些看起来非常非常类似于传统例外的东西。我的问题是:
除了nomenclature(错误与异常)和语法(do-catch,而不是try-catch)之外,Swift 2.0 错误处理和传统异常处理之间是否有任何真正的区别, 尝试在方法调用之前使用等)。
【问题讨论】:
-
Apple 提到(在 Using Swift with Cocoa and ObjC 中)Swift
do-catch语句会自动处理 NSError 返回方法(使用一些代码约定),但不会捕获 ObjC 代码抛出的 NSExceptions。
标签: swift error-handling runtime-error swift2