Sobes.tech
Junior — Middle

როგორ ხორციელდება გამონაკლისების დამუშავება თქვენი გამოცდილების მიხედვით კუროტინების შიგნით?

sobes.tech AI

პასუხი AI-სგან

Android-ზე კორუტინების შეცდომების მართვა ჩვეულებრივ ხორციელდება try-catch ბლოკებით კორუტინში ან სპეციალური მექანიზმებით, როგორიცაა CoroutineExceptionHandler.

თუ კორუტინაში წარმოიქმნება გამონაკლისი, მას შემდეგ შეიძლება დაიჭიროთ ასე:

launch {
    try {
        // კოდი, რომელიც შეიძლება გამოიწვიოს გამონაკლისი
    } catch (e: Exception) {
        // გამონაკლისის მართვა
    }
}

გლობალური გაუმკლავებისათვის, სადაც გამონაკლისები არ არის დამუშავებული, გამოიყენება CoroutineExceptionHandler:

val handler = CoroutineExceptionHandler { _, exception ->
    println("დაჭერილი $exception")
}

GlobalScope.launch(handler) {
    throw RuntimeException("შეცდომა")
}

მნიშვნელოვანია გახსოვდეთ, რომ launch-ით დაწყებული კორუტინების გამონაკლისები გადაეცემა handler-ს, ხოლო async-ით დაწყებული კორუტინების გამონაკლისი გამოიწვევა await()-ის გამოძახებისას.

ამიტომ, async-ის გამოყენებისას, აუცილებელია await()-ის გამოძახება ჩაახშოთ try-catch-ით, რათა შეცდომები მართოთ.