Kotlin Academy · Leçon

runCatching

Capturer les exceptions sous forme de valeurs

Leçon 2 sur 413 étapes

runCatching est une leçon Kotlin Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Kotlin Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Kotlin Academy comprend 4 leçons au total.

Capturer les exceptions

runCatching exécute un bloc et enveloppe son résultat dans un Result : la valeur renvoyée devient un success et toute exception lancée devient une failure. Aucun mécanisme d’essai et d’interception n’est nécessaire.

Utilisation de base

Transmettez une lambda ; la dernière expression constitue la valeur du success.

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

Intercepter une erreur lancée

Lorsque le bloc lance une exception, runCatching la stocke au lieu de la propager.

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

Envelopper une analyse risquée

Un usage courant consiste à envelopper les appels susceptibles de lancer une exception, comme l’analyse, afin que la failure devienne une valeur que vous pouvez gérer.

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

runCatching comme récepteur

Vous pouvez appeler runCatching sur un objet récepteur ; à l’intérieur du bloc, this fait référence à cet objet. C’est utile pour enchaîner des opérations sur une valeur.

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

Récupération immédiate

Combinez avec getOrElse pour fournir une valeur de repli directement à l’endroit de l’appel.

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

fold pour les deux branches

fold gère le success et la failure en un seul appel, en renvoyant une valeur unique issue de l’une ou l’autre branche.

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

Refactorisation de l’essai et de l’interception

Là où vous pourriez écrire une structure d’essai et d’interception qui renvoie une valeur, runCatching est plus concis et conserve le résultat sous forme de données.

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

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

Attention à la capture trop large

runCatching capture tous les objets pouvant être lancés, y compris ceux que vous ne souhaitez peut-être pas intercepter. Évitez d’envelopper de très grands blocs ; limitez la région capturée et rendez ce choix intentionnel.

Enchaîner les transformations

Comme runCatching produit un Result, vous pouvez immédiatement lui appliquer map ou recover. Nous les étudierons dans la prochaine leçon.

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

Pourquoi c’est utile

runCatching fait le lien entre le code qui lance des exceptions et l’univers de Result fondé sur les valeurs. Il vous permet d’adopter une gestion fonctionnelle des erreurs même lorsque vous appelez des interfaces de programmation qui lancent des exceptions.

Vérification rapide

Évaluez votre compréhension de runCatching.

Récapitulatif

Vous avez découvert runCatching :

  • Enveloppe le résultat d’un bloc dans un Result
  • Transforme les exceptions lancées en failures
  • Se combine avec getOrElse et fold
  • Conservez les régions capturées de petite taille

Ensuite : créer des hiérarchies de résultats scellées.

Gratuit pour commencer

Apprends Kotlin avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
51
Leçons
203

Questions Fréquemment Posées

La leçon « runCatching » est-elle gratuite ?

Oui — le texte complet de « runCatching » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Kotlin Academy, passe à CoddyKit PRO. Le cours Kotlin Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « runCatching » ?

Capturer les exceptions sous forme de valeurs Tu pratiques Kotlin Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Kotlin Academy ?

Aucune expérience préalable n'est requise. Kotlin Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « runCatching » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Kotlin Academy ?

Oui. Chaque leçon Kotlin Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Le type Result
  2. runCatching
  3. Hiérarchies Result scellées
  4. Gestion fonctionnelle des erreurs
← Retour à Kotlin Academy