Мне бы очень хотелось использовать более простой классический блок catch try в моем коде 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, как и любой другой популярный язык программирования?