Ответ
SupervisorScope — это CoroutineScope, который отличается от обычного тем, что дочерние корутины не отменяются при падении одной из них. Вместо этого ошибка обрабатывается индивидуально для каждой корутины.
Когда использовать:
- Когда нужно запустить независимые задачи, где падение одной не должно влиять на другие.
- Например, при параллельной загрузке нескольких изображений.
Пример:
supervisorScope {
launch {
// Задача 1
}
launch {
// Задача 2 (если упадёт, Задача 1 продолжит работу)
}
}
⚠️ Ошибки внутри supervisorScope не отменяют родительскую корутину, но их нужно обрабатывать вручную через try/catch или CoroutineExceptionHandler.