0Pricing
Swift Academy · Урок

Параметры in-out и основы обработки ошибок (throws)

Изменяйте аргументы с помощью параметров in-out и обрабатывайте восстановимые сбои, используя throws, try и do/catch.

«Параметры in-out и основы обработки ошибок (throws)» — бесплатный урок Swift Academy на CoddyKit. Это урок 3 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Swift Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Swift Academy содержит 3 уроков всего.

Введение

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

Основы передачи параметров

Параметры, передаваемые с возможностью изменения, позволяют функции изменять переменную вызывающего кода. Вызывайте функцию с помощью &name.

func increment(_ value: inout Int) {
    value += 1   // mutate caller's variable
}
var count = 0
increment(&count)
print("count =", count)  // 1

Когда использовать

Используйте изменяемые параметры умеренно:

  • Они подходят для простых изменений, например для счётчиков.
  • Для ясности и удобства тестирования лучше возвращать новые значения.

Выбрасывание ошибок и обработка

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

enum FileError: Error { case notFound, unreadable }

func readFile(named: String) throws -> String {
    if named.isEmpty { throw FileError.notFound }
    return "contents of \\(named)"
}

// Calling a throwing function
do {
    let text = try readFile(named: "notes.txt")
    print(text)
} catch {
    print("Failed:", error)
}

Необязательная и принудительная попытки

Необязательная попытка превращает ошибки в nil (необязательное значение). Принудительная попытка приведёт к аварийному завершению при ошибке — избегайте её, если не уверены абсолютно.

// try? converts errors to nil (optional)
let maybeText = try? readFile(named: "")
print(maybeText as Any)  // nil

// try! crashes on error—only use when you are sure
// let forcedText = try! readFile(named: "")  // avoid in production

Вспомогательные функции, выдающие ошибки

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

func parseInt(_ s: String) throws -> Int {
    if let n = Int(s) { return n }
    else { throw NSError(domain: "Parse", code: 1) }
}

do {
    let n = try parseInt("10")
    print("n =", n)
} catch {
    print("parse error")
}

Вопрос о передаче параметров

Быстрая проверка: что означает возможность изменения переменной вызывающего кода для параметра?

Итоги

Итоги: используйте изменяемые параметры для непосредственного изменения данных, но умеренно. Обрабатывайте сбои с помощью средств выбрасывания ошибок, выполнения и обработки ошибок; для необязательных результатов предпочитайте необязательную попытку и избегайте принудительной попытки в рабочем коде.

Часто задаваемые вопросы

Урок «Параметры in-out и основы обработки ошибок (throws)» бесплатный?

Да — полный текст урока «Параметры in-out и основы обработки ошибок (throws)» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Swift Academy, подпишись на CoddyKit PRO. Курс Swift Academy содержит 3 уроков всего.

Чему я научусь в уроке «Параметры in-out и основы обработки ошибок (throws)»?

Изменяйте аргументы с помощью параметров in-out и обрабатывайте восстановимые сбои, используя throws, try и do/catch. Ты практикуешь Swift Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Swift Academy?

Предыдущий опыт не требуется. Swift Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 3.

Сколько времени занимает урок «Параметры in-out и основы обработки ошибок (throws)»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Swift Academy?

Да. Каждый урок Swift Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Определение функций, параметры, метки, значения по умолчанию и вариативные параметры
  2. Возвращаемые значения и несколько результатов через кортежи
  3. Параметры in-out и основы обработки ошибок (throws)
← Назад к Swift Academy