Как стать автором
Обновить

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

Вот этот код

let (data, response) = try await URLSession.shared.data(for: imageRequest)

надо бы заключать в блок do {} catch {}, иначе при ошибках на уровне URLSession (например, интернета нет) у нас метод ошибку не выбросит и мы получим то самое:

вызывающий объект застрянет в ожидании либо успешного, либо неудачного случая.

Как это не выбросит? URLSession бросит ошибку, метод downloadImageWithImageId её пробросит в вызывающий код. А там уже её будут обрабатывать. В Swift нельзя (неявно) не обработать ошибку, она никуда не пропадёт. Если бы ошибка не пробрасывалась наверх, компилятор просто не дал бы написать там try.

UPD: другое дело, что тут есть кастомный тип ошибок DownloadError, и хорошо бы сделать do/catch и "обернуть" ошибку URLSession в DownloadError, но это не обязательно (ну и в целом дело вкуса), даже без этого ошибка никуда не денется.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации