#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
toResult<Void, MoyaError>
. Теперь компилятор знает, что эта функция может возвращать только aMoyaError
.