0Pricing
Kotlin Academy · Lección

El tipo Result

Modele el éxito y el fracaso

El tipo Result es una lección gratuita de Kotlin Academy en CoddyKit. Esta es la lección 1 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.

Éxito o error

Muchas operaciones pueden fallar. El tipo Result de Kotlin modela un resultado que es un éxito que contiene un valor o un error que contiene una excepción, sin lanzarla.

Crear un éxito

Envuelva un valor en un resultado correcto con Result.success(value).

fun main() {
    val r: Result<Int> = Result.success(42)
    println(r.isSuccess)
    println(r.getOrNull())
}

Crear un error

Represente un error con Result.failure(exception). No se lanza ninguna excepción hasta que decida desenvolver el resultado.

fun main() {
    val r: Result<Int> = Result.failure(IllegalStateException("bad"))
    println(r.isFailure)
    println(r.exceptionOrNull()?.message)
}

getOrNull y exceptionOrNull

Inspeccione un resultado de forma segura: getOrNull() devuelve el valor o null, y exceptionOrNull() devuelve el error o null.

fun main() {
    val ok = Result.success("hi")
    val bad = Result.failure<String>(RuntimeException("oops"))
    println(ok.getOrNull())
    println(bad.exceptionOrNull()?.message)
}

getOrDefault

Proporcione un valor alternativo para los errores con getOrDefault. Es más limpio que comprobar valores nulos cuando dispone de un valor predeterminado razonable.

fun main() {
    val bad: Result<Int> = Result.failure(Exception())
    println(bad.getOrDefault(0))
    val ok: Result<Int> = Result.success(7)
    println(ok.getOrDefault(0))
}

getOrElse

getOrElse calcula el valor alternativo a partir de la excepción, lo que le permite reaccionar de forma distinta a diferentes errores.

fun main() {
    val r: Result<Int> = Result.failure(IllegalArgumentException("nope"))
    val value = r.getOrElse { e -> if (e is IllegalArgumentException) -1 else -2 }
    println(value)
}

getOrThrow

Cuando sí quiera la excepción, getOrThrow() devuelve el valor o vuelve a lanzar la excepción almacenada.

fun main() {
    val ok = Result.success(10)
    println(ok.getOrThrow())

    try {
        Result.failure<Int>(IllegalStateException("fail")).getOrThrow()
    } catch (e: Exception) {
        println("caught: " + e.message)
    }
}

Devolver un Result

Una función puede devolver Result para hacer explícito el fallo en su firma, obligando a quienes la llaman a gestionar ambos resultados posibles.

fun parse(s: String): Result<Int> {
    val n = s.toIntOrNull()
    return if (n != null) Result.success(n)
           else Result.failure(NumberFormatException(s))
}

fun main() {
    println(parse("123").getOrNull())
    println(parse("x").exceptionOrNull()?.message)
}

Result frente a excepciones

Las excepciones son invisibles en las firmas e interrumpen el flujo de control. Result convierte el error en un valor que puede pasar y transformar como cualquier otro: explícito, componible y difícil de ignorar.

Cuándo usar Result

Use Result para fallos recuperables y esperados que quiera que gestionen quienes llaman a la función. Reserve las excepciones para situaciones verdaderamente excepcionales y errores de programación, como incumplimientos del contrato.

Un valor, no un salto

El cambio fundamental es que un error se convierte en un valor de retorno normal. A continuación aprenderá runCatching, que captura automáticamente las excepciones lanzadas en un Result.

Comprobación rápida

Compruebe su comprensión del tipo Result.

Resumen

Ha aprendido el tipo Result:

  • Créelo con Result.success / Result.failure
  • Inspecciónelo con getOrNull, exceptionOrNull
  • Recupérese con getOrDefault, getOrElse, getOrThrow
  • Devuélvalo para hacer explícito el fallo

A continuación: runCatching.

Preguntas frecuentes

¿La lección «El tipo Result» es gratis?

Sí — el texto completo de «El tipo Result» 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 «El tipo Result»?

Modele el éxito y el fracaso 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 1 de 4.

¿Cuánto tiempo toma la lección «El tipo Result»?

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