【发布时间】:2014-12-20 03:29:32
【问题描述】:
我完全清楚 Swift 没有用于捕获异常的 try/catch 机制(好的,Swift 2.0 现在支持它们)。我也明白许多 API 方法会返回一个 NSError ,如果出现问题,该错误对象将被填充。所以请不要指点我这个问题:Error-Handling in Swift-Language
但这仍然没有解释如何对您自己的代码中的运行时错误做出反应,例如数组越界访问或强制解包 nil 的可选值。例如:
var test: String?
test = nil
println(test!) //oops!
或
var arr = [0,1,2]
for i = 0...3 {
println(arr[i]) //oops!
}
每个程序员偶尔都会犯这样的错误,应该有办法至少记录它们以供以后分析。在调试时,Xcode 可以向我们展示这些,但如果这发生在最终用户或 beta 测试人员身上怎么办?在纯 C 中有信号处理,它也可以在 Objective-C 中使用。斯威夫特有这样的东西吗?在应用终止之前输入的集中回调?
更新:
让我换个说法:在大型项目中,在每个循环和强制展开时手动检查上述错误是不可行的。当运行时错误最终确实发生时,是否会调用诸如 Objective C 的段错误处理或 NSSetUncaughtExceptionHandler 之类的回调,以便可以将错误与崩溃的堆栈跟踪一起记录/通过电子邮件发送?
【问题讨论】:
标签: exception swift runtime signals handle