С выходом
Swift 6 работа с ошибками стала точнее. Теперь вместо простого
throws можно указывать конкретный тип или даже вариант ошибки, что делает код безопаснее и понятнее.
Раньше функция могла выбросить любую ошибку, и компилятор не проверял её тип:
func readFile(at path: String) throws -> String {
}
Теперь можно явно указать, какую именно ошибку ожидать:
func readFile(at path: String) throws(FileNotFoundError) -> String {
}
Если функция попытается выбросить другой вариант
FileNotFoundError (например FileNotFoundError.whileSearchingFile), компилятор заранее сообщит об ошибке.
Зачем это нужно:
Важно:
- Тип ошибки должен соответствовать протоколу Error.
- Можно указать как общий catch (как было ранее), так и конкретный case из enum.
Вывод:
Typed Throws в
Swift 6 - это шаг к предсказуемому и самодокументируемому коду. Меньше скрытых багов, проще отладка!