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-ით, რათა შეცდომები მართოთ.