Как мне поймать «Индекс вне диапазона» в Swift?

Я действительно хотел бы использовать более простой классический блок try catch в своем коде Swift, но я не могу найти ничего, что делает это.

Я просто хотел:

try {
// some code that causes a crash.
}
catch {
// okay well that crashed, so lets ignore this block and move on.
}  

Вот моя дилемма, когда TableView перезагружается с новыми данными, некоторая информация все еще находится в оперативной памяти, которая вызываетdidEndDisplayingCell на tableView со свежим пустым источником данных для сбоя.

Поэтому я часто бросаю исключенияIndex out of range

Я пробовал это:

func tableView(tableView: UITableView, didEndDisplayingCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {

    do {
        let imageMessageBody = msgSections[indexPath.section].msg[indexPath.row] as? ImageMessageBody
        let cell = tableView.dequeueReusableCellWithIdentifier("ImageUploadCell", forIndexPath: indexPath) as! ImageCell
        cell.willEndDisplayingCell()
    } catch {
        print("Swift try catch is confusing...")
    }
}

Я также попробовал это:

func tableView(tableView: UITableView, didEndDisplayingCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
    print(indexPath.section)
    print(indexPath.row)

    if msgSections.count != 0 {
        if let msg = msgSections[indexPath.section].msg[indexPath.row] as? ImageMessageBody {
            let cell = tableView.dequeueReusableCellWithIdentifier("ImageUploadCell", forIndexPath: indexPath) as! ImageCell
            cell.willEndDisplayingCell()
        }
    }
}

Это блок кода с очень низким приоритетом, и я потратил много времени на проб и ошибок, выясняя, какой обработчик ошибок, встроенный в swift, работает в ситуациях, которые кажутся чрезвычайно уникальными, когда у меня есть множество сценариев, таких как этот, где код может дать сбой, и это не повлияет на работу пользователя.

Короче говоря, мне не нужно ничего особенного, но Swift, кажется, имеет чрезвычайно специфические обработчики ошибок, которые различаются в зависимости от того, получаю ли я значение из возвращаемого значения функции или получаю значение из индекса массива, который может не существовать.

Есть ли простая попытка поймать Swift, как и любой другой популярный язык программирования?

Ответы на вопрос(4)

Ваш ответ на вопрос