runSuspendCatching
Ещё несколько лет назад появился issue к репозиторию kotlinx.coroutines с предложением о создании функции, которая должна работать также, как runCatching, но при этом введя дополнительную логику работы с CancellationException.
runCatching из stdlib по умолчанию обрабатывает все возможные исключения, которые попадают в блок. Но это нарушает принципы structured concurrency: отмена корутин работает засчёт выбрасывания CancellationException: он должен игнорироваться обработчиками исключений, чтобы можно было корректно совершать отмену.
В дискуссии под issue довольно много размышлений о целесообразности введения такой функции в библиотеку, а пока многие люди реализуют её в своих проектах сами
Ещё несколько лет назад появился issue к репозиторию kotlinx.coroutines с предложением о создании функции, которая должна работать также, как runCatching, но при этом введя дополнительную логику работы с CancellationException.
runCatching из stdlib по умолчанию обрабатывает все возможные исключения, которые попадают в блок. Но это нарушает принципы structured concurrency: отмена корутин работает засчёт выбрасывания CancellationException: он должен игнорироваться обработчиками исключений, чтобы можно было корректно совершать отмену.
В дискуссии под issue довольно много размышлений о целесообразности введения такой функции в библиотеку, а пока многие люди реализуют её в своих проектах сами
3 7👍4 1