Junior — Middle
Ինչպե՞ս է ձեր փորձում կատարվում արտակարգ իրավիճակների մշակումը կուռուտինների ներսում:
sobes.tech AI
Պատասխան AI-ից
Android-ում coroutine-ների մեջ արտակարգ իրավիճակների կառավարումը սովորաբար կատարվում է try-catch բլոկների միջոցով հենց coroutine-ի ներսում կամ հատուկ մեխանիզմների, ինչպիսիք են CoroutineExceptionHandler:
Եթե coroutine-ի ներսում արտակարգ իրավիճակ է առաջանում, այն կարելի է բռնել հետևյալ կերպ՝
launch {
try {
// կոդ, որը կարող է արտակարգ իրավիճակ առաջացնել
} catch (e: Exception) {
// արտակարգ իրավիճակի կառավարում
}
}
Գլոբալ չհասցված արտակարգ իրավիճակների կառավարումը հնարավոր է իրականացնել CoroutineExceptionHandler-ի միջոցով՝
val handler = CoroutineExceptionHandler { _, exception ->
println("Ատկատ $exception")
}
GlobalScope.launch(handler) {
throw RuntimeException("Սխալ")
}
Կարևոր է հիշել, որ launch-ով սկսված coroutine-ների մեջ արտակարգ իրավիճակները փոխանցվում են handler-ին, իսկ async-ով սկսված coroutine-ների մեջ արտակարգ իրավիճակը կբացահայտվի await()-ի ժամանակ:
Հետևաբար, async-ի դեպքում անհրաժեշտ է շրջապատել await()-ի կանչը try-catch-ով՝ սխալները կառավարելու համար։