runCatching { } возвращает Result<T> с success/failure; дальше getOrElse/mapCatching/recover.
Разбор
- Не глотайте CancellationException в корутинах — rethrow.
- Result не заменяет sealed domain errors полностью.
- Удобно на границах парсинга.
getOrThrow пробрасывает exception.
Пример
val result = runCatching { json.decodeFromString<User>(raw) }
val user = result.getOrElse { fallback }
Итог
Result — лёгкий railway для исключений, с осторожностью в coroutines.