Kotlin Academy · Lección

runCatching

Capture excepciones como valores

Lección 2 de 413 pasos

runCatching es una lección gratuita de Kotlin Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Kotlin Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Kotlin Academy incluye 4 lecciones en total.

Capturar excepciones

runCatching ejecuta un bloque y envuelve su resultado en un Result: el valor devuelto se convierte en un éxito y cualquier excepción lanzada se convierte en un error. No necesita try/catch.

Uso básico

Proporcione una lambda; la última expresión será el valor del éxito.

fun main() {
    val r = runCatching { 10 / 2 }
    println(r.isSuccess)
    println(r.getOrNull())
}

Capturar un error lanzado

Cuando el bloque lanza una excepción, runCatching la almacena en lugar de propagarla.

fun main() {
    val r = runCatching { 10 / 0 }
    println(r.isFailure)
    println(r.exceptionOrNull()?.message)
}

Envolver un análisis de riesgo

Un uso habitual es envolver llamadas que pueden lanzar excepciones, como las de análisis, para que el fallo sea un valor que pueda gestionar.

fun main() {
    val good = runCatching { "42".toInt() }
    val bad = runCatching { "abc".toInt() }
    println(good.getOrNull())
    println(bad.getOrNull())
}

runCatching como receptor

Puede llamar a runCatching sobre un objeto receptor; dentro del bloque, this hace referencia a él. Es útil para encadenar operaciones sobre un valor.

fun main() {
    val text = "  99 "
    val r = text.runCatching { trim().toInt() }
    println(r.getOrNull())
}

Recuperación en línea

Combínelo con getOrElse para proporcionar un valor alternativo directamente en el punto de llamada.

fun main() {
    val n = runCatching { "oops".toInt() }.getOrElse { -1 }
    println(n)
}

fold para ambas ramas

fold gestiona el éxito y el error en una sola llamada, devolviendo un único valor desde cualquiera de las dos ramas.

fun main() {
    val message = runCatching { "50".toInt() }.fold(
        onSuccess = { "got " + it },
        onFailure = { "error: " + it.message }
    )
    println(message)
}

Refactorizar try/catch

Cuando escribiría un try/catch que devuelve un valor, runCatching resulta más conciso y mantiene el resultado como datos.

fun safeDivide(a: Int, b: Int): Result<Int> =
    runCatching { a / b }

fun main() {
    println(safeDivide(8, 2).getOrNull())
    println(safeDivide(8, 0).exceptionOrNull()?.message)
}

Tenga cuidado con la captura generalizada

runCatching captura todos los Throwables, incluidos aquellos que quizá no quiera ocultar. Evite envolver bloques enormes; mantenga la región capturada pequeña y deliberada.

Encadenar transformaciones

Como runCatching produce un Result, puede encadenar inmediatamente map o recover. Los estudiaremos en la siguiente lección.

fun main() {
    val r = runCatching { "7".toInt() }.map { it * 10 }
    println(r.getOrNull())
}

Por qué resulta útil

runCatching conecta el código que lanza excepciones con el mundo de Result, basado en valores. Permite adoptar una gestión funcional de errores incluso al llamar a APIs que lanzan excepciones.

Comprobación rápida

Compruebe su comprensión de runCatching.

Resumen

Ha aprendido runCatching:

  • Envuelve el resultado de un bloque en un Result
  • Convierte las excepciones lanzadas en errores
  • Se combina con getOrElse y fold
  • Mantenga pequeñas las regiones capturadas

A continuación: creación de jerarquías de resultados selladas.

Gratis para empezar

Aprende Kotlin con un tutor de IA — gratis

Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.

Cursos
51
Lecciones
203

Preguntas frecuentes

¿La lección «runCatching» es gratis?

Sí — el texto completo de «runCatching» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Kotlin Academy, actualiza a CoddyKit PRO. El curso de Kotlin Academy incluye 4 lecciones en total.

¿Qué aprenderé en «runCatching»?

Capture excepciones como valores Practicas Kotlin Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Kotlin Academy?

No se requiere experiencia previa. Kotlin Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «runCatching»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Kotlin Academy?

Sí. Cada lección de Kotlin Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. El tipo Result
  2. runCatching
  3. Jerarquías selladas de Result
  4. Gestión funcional de errores
← Volver a Kotlin Academy