Sobes.tech
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 για να διαχειριστούμε τα σφάλματα.