【发布时间】:2015-11-28 06:09:28
【问题描述】:
我在 Playground 中获得了此代码:
func throwsError() throws{
var x = [1,2]
print(x[3])
}
func start(){
do{
try throwsError()
}
catch let unknown{
"unknown: \(unknown)"
}
}
start()
那么显然'throwsError 函数会抛出错误:
执行被中断,原因:EXC_BAD_INSTRUCTION
有没有办法捕捉到这个? 我在线阅读为始终检查范围但问题更大的 Array 类编写下标: 难道我什么都抓不到吗?
【问题讨论】:
-
异常和错误是不同的东西,你不能在 Swift 中捕获异常。
-
如果我们可以编写错误处理程序,就像我们可以编写完成处理程序并让它们与 do try catch 方法一起工作,那将会很棒。
-
我想你可以:apple doc
-
我们从 Obj-C 知道的异常捕获从未奏效。它与 C++ 中存在相同的问题,通常会留下大量内存而没有释放,并且大量内部状态已损坏。例如,任何通过 Cocoa/CocoaTouch API 的异常都会破坏应用程序 UI。这就是为什么Apple一直强烈反对使用异常并开始使用
NSErrors的原因。不要试图捕捉异常。如果遇到异常,请查找原因并解决。不要抓住它。 Swift 无法捕获异常。
标签: ios swift exception error-handling swift2