0Pricing
Kotlin Academy · Lezione

runCatching

Catturi le eccezioni come valori

runCatching è una lezione Kotlin Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Kotlin Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Kotlin Academy include 4 lezioni in totale.

Catturare le eccezioni

runCatching esegue un blocco e ne racchiude l'esito in un Result: il valore restituito diventa un successo, mentre qualsiasi eccezione lanciata diventa un fallimento. Non serve try/catch.

Utilizzo di base

Passi una lambda; l'ultima espressione è il valore del successo.

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

Catturare un errore lanciato

Quando il blocco lancia un'eccezione, runCatching la memorizza invece di propagarla.

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

Racchiudere il parsing rischioso

Un uso comune consiste nel racchiudere le chiamate che possono lanciare eccezioni, come il parsing, così il fallimento diventa un valore che è possibile gestire.

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

runCatching come receiver

È possibile chiamare runCatching su un oggetto receiver; all'interno del blocco this fa riferimento a quell'oggetto. È utile per concatenare operazioni su un valore.

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

Recupero inline

Lo combini con getOrElse per fornire un valore alternativo direttamente nel punto della chiamata.

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

fold per entrambi i rami

fold gestisce successo e fallimento in un'unica chiamata, restituendo un solo valore da uno dei due rami.

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

Refactoring di try/catch

Quando potrebbe scrivere un try/catch che restituisce un valore, runCatching è più conciso e mantiene il risultato come dato.

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

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

Attenzione alla cattura indiscriminata

runCatching cattura tutti i Throwables, compresi quelli che potrebbe non voler ignorare. Eviti di racchiudere blocchi enormi; mantenga piccola e intenzionale la regione catturata.

Concatenare le trasformazioni

Poiché runCatching produce un Result, è possibile concatenare immediatamente map o recover. Li esploreremo nella prossima lezione.

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

Perché è utile

runCatching fa da ponte tra il codice che lancia eccezioni e il mondo di Result basato sui valori. Consente di adottare la gestione funzionale degli errori anche quando si chiamano API che lanciano eccezioni.

Verifica rapida

Verifichi la Sua comprensione di runCatching.

Riepilogo

Ha imparato a usare runCatching:

  • Racchiude l'esito di un blocco in un Result
  • Trasforma le eccezioni lanciate in fallimenti
  • Si combina con getOrElse e fold
  • Mantiene piccole le regioni catturate

Prossimo argomento: creare gerarchie sealed per i risultati.

Domande Frequenti

La lezione «runCatching» è gratuita?

Sì — il testo completo di «runCatching» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Kotlin Academy, passa a CoddyKit PRO. Il corso Kotlin Academy include 4 lezioni in totale.

Cosa imparerò in «runCatching»?

Catturi le eccezioni come valori Eserciti Kotlin Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Kotlin Academy?

Non è richiesta alcuna esperienza precedente. Kotlin Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «runCatching»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Kotlin Academy?

Sì. Ogni lezione Kotlin Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Il tipo Result
  2. runCatching
  3. Gerarchie Result sealed
  4. Gestione funzionale degli errori
← Torna a Kotlin Academy