Junior — Middle
Millised lähenemised ja meetodid kasutatakse Kotlin korutinates vigade töötlemiseks?
sobes.tech AI
Vastus AI-lt
Kotlinis on mitu lähenemisviisi vigade käsitlemiseks korutinates:
- try-catch korutinas sees — kõige lihtsam viis erandite käsitlemiseks. Võite koodi
launchvõiasyncplokki pannatry-catch-i.
launch {
try {
// kood, mis võib visata erandi
} catch (e: Exception) {
// vea käsitlemine
}
}
- CoroutineExceptionHandler — spetsiaalne käsitleja, mida saab korutina kontekstis edasi anda. Ta püüab kinni käsitlemata erandid
launch-iga käivitatud korutinates.
val handler = CoroutineExceptionHandler { _, exception ->
println("Tabatud $exception")
}
GlobalScope.launch(handler) {
throw RuntimeException("Viga")
}
- Vigade käsitlemine async/await-iga — kasutades
async, erandid ei visata kohe, vaidawait()kutsumisel. Seetõttu tulebawait()-i pannatry-catch-i.
val deferred = async {
// kood
throw Exception("Viga")
}
try {
deferred.await()
} catch (e: Exception) {
// käsitlemine
}
- SupervisorJob ja SupervisorScope — võimaldavad isoleerida laste korutinade vigu, nii et üks viga ei tühista kogu vanema scope.
Seega, meetodi valik sõltub kontekstist ja korutina tüübist (launch või async).