Недопустимое преобразование из функции выбрасывания типа ‘xx’ в функцию без выбрасывания типа ‘xx’

#swift

#swift

Вопрос:

как это исправить?

как это исправить? Как я должен правильно использовать do-try-catch. Это возможно, когда я удаляю код ошибки из сегмента catch, но мне нужен конкретный тип ошибки, так как мне поймать конкретную ошибку и использовать ее?

 static func request<T: HandyJSON>(
    target: StatusAPI,
    type: T.Type,
    success successCallback: (T) -> Void,
    error errorCallback: (_ statusCode: Int) -> Void,
    failure failureCallback: @escaping (MoyaError) -> Void
) {
    provider.request(target) { result in
        switch result {
        case let .success(response):
            do {
                try response.filterSuccessfulStatusCodes()
            } catch {
                print(error)
            }
        case let .failure(error):
            failureCallback(error)
        }
    }
}
 

Комментарии:

1. Пожалуйста, отправьте код в виде текста, а не в виде картинки.

2. это должно быть ошибкой catch let или просто удалить ошибку

3. Если вы поймаете только определенную ошибку, filterSuccessfulStatusCodes то включающая функция все равно будет throwing , потому что компилятор не знает о конкретных ошибках, которые filterSuccessfulStatusCodes будут генерироваться. Чтобы обойти это, вы могли бы изменить возвращаемый тип filterSuccessfulStatusCodes to Result<Void, MoyaError> . Теперь компилятор знает, что эта функция может возвращать только a MoyaError .