Login Sign Up
Advert
Your ad spot
Reserve this exclusive slot for the selected period.
Buy advertising →
Telegram community logo - BW Swift
Added 06 Jan 2025

BW Swift

@bwswift
Number of subscribers: 1 742
Photos: 1,710
Videos: 176
Links: 1,590
Description:
Канал створений для навчання програмування на swift та розробці програм під iOS. Мета проекту - допомогти студентам пройти шлях від розробника-початківця до оплачуваного фахівця. Тут я публікую актуальні та цікаві статті щодо iOS розробки. Адмін: @bws2007
Source

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

Telegram community logo - BW Swift BW Swift @bwswift
718 Views/Reach 2025-08-01 19:28 Message №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. Можеш підписатися, якщо було цікаво =)