Junior — Middle
Πώς γίνεται η διαχείριση εξαιρέσεων μέσα σε κορουτίνες στην εμπειρία σας;
sobes.tech AI
Απάντηση από AI
Η διαχείριση εξαιρέσεων στις coroutine στο Android γίνεται συνήθως με τη χρήση μπλοκ try-catch μέσα στη coroutine ή με ειδικούς μηχανισμούς όπως το CoroutineExceptionHandler.
Εάν προκύψει μια εξαίρεση μέσα σε μια coroutine, μπορεί να πιαστεί ως εξής:
launch {
try {
// κώδικας που μπορεί να προκαλέσει εξαίρεση
} catch (e: Exception) {
// διαχείριση της εξαίρεσης
}
}
Για την παγκόσμια διαχείριση μη χειρισμένων εξαιρέσεων, μπορεί να χρησιμοποιηθεί το CoroutineExceptionHandler:
val handler = CoroutineExceptionHandler { _, exception ->
println("Πιάστηκε $exception")
}
GlobalScope.launch(handler) {
throw RuntimeException("Σφάλμα")
}
Είναι σημαντικό να θυμόμαστε ότι οι εξαιρέσεις σε coroutines που ξεκινούν μέσω launch μεταβιβάζονται στον χειριστή, ενώ σε coroutines που ξεκινούν μέσω async, η εξαίρεση θα ριχτεί κατά την κλήση του await().
Επομένως, κατά τη χρήση του async, πρέπει να περικλείουμε την κλήση await() σε ένα try-catch για να διαχειριστούμε τα σφάλματα.