Вхід Реєстрація
Реклама
Ваше рекламне місце
Забронюйте цей слот без конкуренції на обраний період.
Купити рекламу →
Логотип телеграм спільноти - BW Swift
Додано 06 січ 2025

BW Swift

@bwswift
Кількість підписників: 1 748
Фото: 1,710
Відео: 176
Посилання: 1,590
Опис:
Канал створений для навчання програмування на swift та розробці програм під iOS. Мета проекту - допомогти студентам пройти шлях від розробника-початківця до оплачуваного фахівця. Тут я публікую актуальні та цікаві статті щодо iOS розробки. Адмін: @bws2007
Джерело

BW Swift | Помічали, що всередині блоку Task throwing функції не потребують викон...

Логотип телеграм спільноти - BW Swift BW Swift @bwswift
718 Охват/переглядів 2025-08-01 19:28 Повідомлення №1932
Помічали, що всередині блоку Task throwing функції не потребують виконання через do-catch? Якщо так, то можливо ви помічали, що навіть фейл у throwing операції НЕ призводить до крашу всередині Task? Ну, в деякому сенсі всеж таки призводить. Давайте розбиратися. Така поведінка може видаватися контрінтуітивною на перший погляд. В синхронном коді необроблена помилка з try зазвичай призводить до крешу. Ба більше: зазвичай такі операції ВИМАГАЮТЬ огортання в do-catch або опціональну огортку. Але всередині Swift Concurrency Task логіка відрізняється. Дехто в мережі вважає це помилкою розробників, недопрацьованим моментом. Але мені задум зрозумілий: ви все ще маєте змогу опрацювати помилку всередині Task через do-catch, але якщо ви цього не робите, Swift припускає, що ви навмисно закладаєте логіку відміни Task. Тобто, Task на моменті помилки необробленої try просто відміняється. Тихо, непомітно, без крашу, без логів. Ви все ще можете отримати краш, якщо явно викличете force-unwrap (try!), чи просто пропустити фейлову ділянку через опціонал (try?), або можете спіймати помилку через do-catch. Чому така поведінка можлива? Тут все просто: закенселити асинхронний блок коду - відносно очікуваний сценарій за замовчуванням, що потенційно є безпечною реакцією. ------------------------------Я часто пишу і писав різні здебільшого технічні цікавинки на моєму Linkedin. Можеш підписатися, якщо було цікаво =)