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
getOrElseefold - 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.