4

我正在使用 for 循环来迭代数组。当索引超出范围时,异常断点不会在错误点停止。

我的代码

class ViewController: UIViewController
{
    let integers = [1, 2, 3]

    override func viewDidLoad()
    {
        super.viewDidLoad()
        iterate(givenArray: integers)
    }

    func iterate(givenArray: [Int])
    {
        for index in 0...givenArray.count
        {
            print(givenArray[index])
        }
    }
}

我在控制台收到以下错误。

1 2 3 致命错误:索引超出范围 2020-01-06 14:29:09.726533+0530 Playground[93060:2221772] 致命错误:索引超出范围

我理解错误。我的问题是,虽然我添加了异常断点,但为什么它不起作用?

4

2 回答 2

0

请记住,在 Swift 中发生的错误不是异常,而只是错误(NSError,无论是基于 ErrorType,...)。

不要将符号断点与异常断点混用。不同的动物。请记住这一点。当您尝试在 Xcode 中设置异常检查点时,没有 Swift。大概主要原因是废弃的错误也不例外,还没想好还能放哪里。手动加点!!

于 2020-01-28T13:34:43.017 回答
0

它不会因异常断点而中断,因为调用fatalError()与抛出异常不同 - 它更严重。

您可以认为它表明您的应用程序处于不应尝试从中恢复的状态,并且始终会导致您的应用程序退出。

有一些创造性的方法[1] 可以中断对 fatalError 的调用,但我认为你最好考虑这是一个应该修复的代码错误,并以这种方式保护自己免受错误的影响,而不是试图在运行时处理错误。

[1] -在任何“致命错误:在展开可选值时意外发现 nil”时中断

于 2020-01-28T11:42:24.427 回答