Бросить ошибку внутри обратного вызова

Вопрос

Мне интересно, каков наилучший способ выбросить ошибку внутри обратного вызова в Swift

Рассмотрим следующий код...

public func saveUser () throws -> Int {
    getAccessToken { (token, error) in
        if let error = error { throw error }
        guard let token = token else { throw -1 }
        UserDefaults.standard.set(token, forKey: "user_token")
    }
}

Теперь, когда я запускаю это, я получаю ошибку

Invalid conversion from throwing function of type '(_, _) throws -> ()' to non-throwing function type '(String?, Error?) -> Void'

так как getAccessToken не бросает ничего. Если бы я создал getAccessToken функцию я бы просто добавил throws -> () - но я не могу, это библиотека. Это подводит меня к моему вопросу: как я могу выдать ошибку из-за обратного вызова?

0 ответов

Другие вопросы по тегам