在Swift 2中捕获"IndexOutOfBoundsException"

fan*_*ncy 3 error-handling exception ios swift swift2

我在Playground中得到了这段代码:

func throwsError() throws{
    var x = [1,2]
    print(x[3])
}

func start(){

    do{
        try throwsError()

    }
    catch let unknown{
        "unknown: \(unknown)"
    }
}

start()
Run Code Online (Sandbox Code Playgroud)

所以很明显这个'throwsError函数会抛出一个错误:

执行被中断,原因是:EXC_BAD_INSTRUCTION

有没有办法抓住这个?我在线阅读为Array类编写一个下标,它总是检查范围,但问题更大:我不能抓住任何东西吗?

Mar*_*one 7

在Swift中,你catch什么都不能.您只能赶上错误与抛出throw其他银行代码或错误,类型的声明NSError被称为目标C代码中设置.

默认数组下标引发异常,但不是throwSwift 错误,因此您不能使用try/catch.

另见Erica Sadun 撰写的这篇文章.