Цепочки optional и основы обработки ошибок
Используйте цепочки optional, шаблоны guard, try?/try! и do/catch для обработки отсутствующих значений и ошибок. Изучите Result как альтернативу.
«Цепочки optional и основы обработки ошибок» — бесплатный урок Swift Academy на CoddyKit. Это урок 1 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Swift Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Swift Academy содержит 3 уроков всего.
Введение
В этом уроке опциональные значения связаны с обработкой ошибок. Изучите цепочки вызовов, шаблоны с проверкой, оператор условной обработки/оператор принудительной обработки и Result.
Цепочки вызовов для опциональных значений
Цепочка вызовов для опциональных значений (a?.b?.c) останавливается и возвращает nil, если любое звено равно nil.
struct User { var address: Address? }
struct Address { var city: String }
let u: User? = User(address: Address(city: "Paris"))
print(u?.address?.city) // Optional("Paris")Шаблон guard
Проверка с выходом завершает выполнение досрочно, если опциональное значение равно nil, после чего распакованное значение остаётся доступным.
func greet(_ name: String?) {
guard let n = name else {
print("No name")
return
}
print("Hello, \\(n)!")
}
greet(nil)
greet("Ada")Условная и принудительная обработка ошибок
Условная обработка ошибки возвращает nil при ошибке. Принудительная обработка ошибки приводит к сбою, если возникает ошибка.
enum ParseErr: Error { case bad }
func parse(_ s: String) throws -> Int {
guard let n = Int(s) else { throw ParseErr.bad }
return n
}
let ok = try? parse("10") // Int?
let fail = try? parse("xx") // nil
// let crash = try! parse("xx") // runtime crashБлок do/catch
Блок do/catch явно обрабатывает выброшенные ошибки.
do {
let n = try parse("42")
print(n)
} catch {
print("error:", error)
}Тип Result
Result<T,ошибка> кодирует успешное выполнение или сбой без выбрасывания ошибки.
func safeParse(_ s: String) -> Result<Int,Error> {
do { return .success(try parse(s)) }
catch { return .failure(error) }
}
print(safeParse("5"))
print(safeParse("oops"))Вопрос о цепочках вызовов
Быстрая проверка: что делает цепочка вызовов для опциональных значений?
Итоги
Итоги: сочетайте опциональные значения и обработку ошибок. Используйте цепочки вызовов, проверки с выходом, условную и принудительную обработку ошибок, блоки do/catch и Result, чтобы безопасно управлять отсутствующими значениями и сбоями.
Часто задаваемые вопросы
Урок «Цепочки optional и основы обработки ошибок» бесплатный?
Да — полный текст урока «Цепочки optional и основы обработки ошибок» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Swift Academy, подпишись на CoddyKit PRO. Курс Swift Academy содержит 3 уроков всего.
Чему я научусь в уроке «Цепочки optional и основы обработки ошибок»?
Используйте цепочки optional, шаблоны guard, try?/try! и do/catch для обработки отсутствующих значений и ошибок. Изучите Result как альтернативу. Ты практикуешь Swift Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Swift Academy?
Предыдущий опыт не требуется. Swift Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 3.
Сколько времени занимает урок «Цепочки optional и основы обработки ошибок»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Swift Academy?
Да. Каждый урок Swift Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Цепочки optional и основы обработки ошибок
- do/catch и определение ошибок (перечисления)
- Типы Result — Result