Добавить объявление

Swift 6: Typed Throws - точечная обработка ошибок.

С выходом Swift 6 работа с ошибками стала точнее. Теперь вместо простого throws можно указывать конкретный тип или даже вариант ошибки, что делает код безопаснее и понятнее.

Раньше функция могла выбросить любую ошибку, и компилятор не проверял её тип:

func readFile(at path: String) throws -> String {
}

Теперь можно явно указать, какую именно ошибку ожидать:

func readFile(at path: String) throws(FileNotFoundError) -> String {
}

Если функция попытается выбросить другой вариант FileNotFoundError (например FileNotFoundError.whileSearchingFile), компилятор заранее сообщит об ошибке.

Зачем это нужно:


  • Безопасность: компилятор проверяет, что вы ловите именно те ошибки, которые задекларированы.

  • Читаемость: из сигнатуры функции сразу видно, что может пойти не так.

  • Упрощение кода: больше не нужен «универсальный» catch для всех неизвестных ошибок:

    do {
    let content = try readFile(at: "path")
    } catch FileNotFoundError.whileReadingFile {
    print("Файл поврежден")
    } catch FileNotFoundError.whileSearchingFile {
    print("Ошибка при поиске файла")
    }

Важно:


  • Тип ошибки должен соответствовать протоколу Error.

  • Можно указать как общий catch (как было ранее), так и конкретный case из enum.

Вывод:


Typed Throws в Swift 6 - это шаг к предсказуемому и самодокументируемому коду. Меньше скрытых багов, проще отладка!
05.07.2025 10 388