0Pricing
Kotlin Academy · Aula

runCatching

Capture exceções como valores

runCatching é uma aula grátis de Kotlin Academy no CoddyKit. Esta é a aula 2 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.

Capturando Exceções

runCatching executa um bloco e encapsula seu resultado em um Result: o valor retornado se torna um success, e qualquer exceção lançada se torna uma failure. Não é necessário um tratamento explícito de exceções.

Uso Básico

Passe uma função anônima; a última expressão é o valor de success.

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

Capturando um Erro Lançado

Quando o bloco lança uma exceção, runCatching armazena a exceção em vez de propagá-la.

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

Encapsulando uma Análise Arriscada

Um uso comum é encapsular chamadas que podem lançar exceções, como operações de análise, para que a failure seja um valor que você possa tratar.

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

runCatching como Receptor

Você pode chamar runCatching em um objeto receptor; dentro do bloco, this se refere a ele. Isso é útil para encadear operações em um valor.

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

Recuperação em Linha

Combine com getOrElse para fornecer um valor alternativo diretamente no local da chamada.

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

fold para Ambos os Ramos

fold trata success e failure em uma única chamada, retornando um único valor de qualquer um dos ramos.

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

Refatorando o Tratamento de Exceções

Onde você poderia escrever um bloco de tratamento de exceções que retorna um valor, runCatching é mais conciso e mantém o resultado como dados.

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

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

Tenha Cuidado com a Captura Ampla

runCatching captura todos os objetos lançáveis, inclusive aqueles que talvez você não queira ocultar. Evite encapsular blocos enormes; mantenha a região capturada pequena e intencional.

Encadeando Transformações

Como runCatching produz um Result, você pode encadear imediatamente map ou recover. Exploraremos isso na próxima lição.

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

Por que Isso Ajuda

runCatching conecta o código que lança exceções ao universo de valores de Result. Ele permite adotar o tratamento funcional de erros mesmo ao chamar interfaces de programação que lançam exceções.

Verificação Rápida

Verifique sua compreensão sobre runCatching.

Recapitulação

Você aprendeu sobre runCatching:

  • Encapsula o resultado de um bloco em um Result
  • Transforma exceções lançadas em failures
  • Combina com getOrElse e fold
  • Mantenha pequenas as regiões capturadas

A seguir: criação de hierarquias seladas de resultados.

Perguntas Frequentes

A aula “runCatching” é grátis?

Sim — o texto completo de “runCatching” é 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 “runCatching”?

Capture exceções como valores 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 2 de 4.

Quanto tempo leva a aula “runCatching”?

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