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
getOrNulleexceptionOrNull - Recuperá-lo com
getOrDefault,getOrElseegetOrThrow - 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.