База Hintsage

Обработка ошибок

throws, Result, defer и моделирование ошибок.

Практика

Вопросы: Обработка ошибок

Спрогнозируйте, какой обработчик выполнится при вызове charge(), и объясните роль динамического типа ошибки.

enum PaymentError: Error {
    case declined(reason: String)
    case unavailable
}

func charge() throws {
    let error: Error = PaymentError.declined(reason: "limit")
    throw error
}

do {
    try charge()
} catch PaymentError.declined(let reason) where reason == "limit" {
    print(" лимит")
} catch PaymentError.declined {
    print("отклонено")
} catch {
    print("другая ошибка")
}
Программирование SwiftОбработка ошибокМладший разработчик iOS на Swift

Практическая ситуация: бросающую функцию нужно представить как Result. Какой результат создаст этот код и за счёт какого механизма ошибка попадёт в failure?

enum LoadError: Error {
    case offline
}

func load() throws -> Int {
    throw LoadError.offline
}

let result = Result { try load() }
Программирование SwiftОбработка ошибокРазработчик мобильных приложений на Swift

Показано 1–20 из 52