Бросить ошибку внутри обратного вызова
Вопрос
Мне интересно, каков наилучший способ выбросить ошибку внутри обратного вызова в 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 -> ()
- но я не могу, это библиотека. Это подводит меня к моему вопросу: как я могу выдать ошибку из-за обратного вызова?