一尘不染

在Swift 2中捕获“ IndexOutOfBoundsException”

swift

我在游乐场中获得了以下代码:

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类编写一个下标,该下标始终检查范围,但问题更大:我无法捕捉任何东西吗?


阅读 256

收藏
2020-07-07

共1个答案

一尘不染

在Swift中,您catch什么都做不到。您只能赶上 错误 与抛出throw由被称为目标C代码的其他银行代码或错误,类型NSError一套说法。

默认的数组下标引发一个 exception ,但不会throw产生Swift 错误 ,因此您不能对其使用try / catch。

另请参阅Erica Sadun的这篇文章

2020-07-07