0Pricing
Kotlin Academy · Aula

O Tipo Result

Modele sucesso e falha

O Tipo Result é uma aula grátis de Kotlin Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Kotlin Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Kotlin Academy inclui 4 aulas no total.

Success ou Falha

Muitas operações podem falhar. O tipo Result do Kotlin modela um resultado que é either a success que contém um valor ou uma failure que contém uma exceção — sem lançar exceções.

Criando um Success

Encapsule um valor em um resultado de success com Result.success(value).

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

Criando uma Falha

Represente um erro com Result.failure(exception). Nenhuma exceção é lançada até que você decida extraí-la.

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

getOrNull e exceptionOrNull

Inspecione um resultado com segurança: getOrNull() retorna o valor ou null, e exceptionOrNull() retorna o erro ou null.

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

getOrDefault

Forneça um valor alternativo para failures com getOrDefault. É mais limpo do que verificar valores nulos quando você tem um padrão adequado.

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 o valor alternativo a partir da exceção, permitindo reagir de forma diferente a diferentes erros.

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

Quando você realmente quiser a exceção, getOrThrow() retorna o valor ou relança a exceção armazenada.

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

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

Retornando um Result

Uma função pode retornar Result para tornar a failure explícita em sua assinatura, obrigando os chamadores a tratar ambos os resultados.

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 em Comparação com Exceções

As exceções não aparecem nas assinaturas e interrompem o fluxo de controle. Result transforma a failure em um valor que você pode passar e transformar como qualquer outro — de forma explícita, combinável e difícil de ignorar.

Quando Usar Result

Use Result para failures recuperáveis e esperadas que você deseja que os chamadores tratem. Reserve o lançamento de exceções para situações verdadeiramente excepcionais, causadas por erros do programador, como violações de contrato.

Um Valor, Não um Salto

A mudança fundamental: um erro se torna um valor de retorno normal. A seguir, você aprenderá runCatching, que captura automaticamente exceções lançadas em um Result.

Verificação Rápida

Verifique sua compreensão sobre o tipo Result.

Recapitulação

Você aprendeu sobre o tipo Result:

  • Criá-lo com Result.success / Result.failure
  • Inspecioná-lo com getOrNull e exceptionOrNull
  • Recuperá-lo com getOrDefault, getOrElse e getOrThrow
  • Retorná-lo para tornar a failure explícita

A seguir: runCatching.

Perguntas Frequentes

A aula “O Tipo Result” é grátis?

Sim — o texto completo de “O Tipo Result” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Kotlin Academy, atualize para CoddyKit PRO. O curso de Kotlin Academy inclui 4 aulas no total.

O que vou aprender em “O Tipo Result”?

Modele sucesso e falha Você pratica Kotlin Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Kotlin Academy?

Nenhuma experiência prévia é necessária. Kotlin Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “O Tipo Result”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Kotlin Academy?

Sim. Cada aula de Kotlin Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. O Tipo Result
  2. runCatching
  3. Hierarquias Result Seladas
  4. Tratamento Funcional de Erros
← Voltar para Kotlin Academy