Sobes.tech
Junior — Middle

Πώς υλοποιείται η διαχείριση εξαιρέσεων σε ασύγχρονες κορουτίνες;

sobes.tech AI

Απάντηση από AI

Στην Kotlin, για τη διαχείριση εξαιρέσεων σε coroutines, μπορείτε να χρησιμοποιήσετε μπλοκ try-catch μέσα στην ίδια τη coroutine ή να εφαρμόσετε ειδικές κατασκευές όπως το CoroutineExceptionHandler.

Παράδειγμα με try-catch μέσα στη coroutine:

launch {
    try {
        val result = someSuspendFunction()
        println(result)
    } catch (e: Exception) {
        println("Σφάλμα: ${e.message}")
    }
}

Αν η coroutine ξεκινάει μέσω του launch, οι μη διαχειριζόμενες εξαιρέσεις μεταβιβάζονται στο CoroutineExceptionHandler:

val handler = CoroutineExceptionHandler { _, exception ->
    println("Διαχειρισμένη εξαίρεση: ${exception.message}")
}

GlobalScope.launch(handler) {
    throw RuntimeException("Σφάλμα στη coroutine")
}

Έτσι, μπορείτε να διαχειριστείτε ευέλικτα τα σφάλματα στον ασύγχρονο κώδικα.