Kotlin Academy · Lektion

runCatching

Indfang exceptions som værdier

Lektion 2 af 413 trin

runCatching er en gratis Kotlin Academy-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Kotlin Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Kotlin Academy-kurset indeholder 4 lektioner i alt.

Indfangning af undtagelser

runCatching kører en blok og indpakker dens udfald i et Result: Returværdien bliver en succes, og enhver kastet undtagelse bliver en fejl. Du behøver ingen try/catch.

Grundlæggende brug

Send et lambdaudtryk ind; det sidste udtryk er succesværdien.

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

Indfangning af en kastet undtagelse

Når blokken kaster en undtagelse, gemmer runCatching den i stedet for at lade den sprede sig.

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

Indpakning af risikofyldt parsning

En almindelig anvendelse er at indpakke kald, der kan kaste undtagelser, for eksempel parsning, så fejlen bliver en værdi, du kan håndtere.

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

runCatching som modtager

Du kan kalde runCatching på et modtagerobjekt; inde i blokken refererer this til objektet. Det er nyttigt til at kæde handlinger på en værdi.

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

Gendannelse direkte på stedet

Kombinér med getOrElse for at angive en reserveværdi direkte på kaldsstedet.

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

fold for begge grene

fold håndterer succes og fejl i ét kald og returnerer en enkelt værdi fra den ene eller den anden gren.

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

Omskrivning af try/catch

Hvor du ellers kunne skrive en try/catch, der returnerer en værdi, er runCatching mere kortfattet og bevarer resultatet som data.

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

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

Vær forsigtig med bred indfangning

runCatching indfanger alle Throwables, også dem du måske ikke vil skjule. Undgå at indpakke enorme blokke; hold det indfangede område lille og tilsigtet.

Kædning af transformationer

Fordi runCatching giver et Result, kan du straks kæde map eller recover på det. Vi undersøger dem i næste lektion.

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

Hvorfor det hjælper

runCatching forbinder kode, der kaster undtagelser, med den værdibaserede Result-verden. Det lader dig anvende funktionel fejlhåndtering, selv når du kalder programmeringsgrænseflader, der kaster undtagelser.

Hurtig kontrol

Test din forståelse af runCatching.

Opsummering

Du lærte runCatching at kende:

  • Indpakker en bloks udfald i et Result
  • Omdanner kastede undtagelser til fejl
  • Kan kombineres med getOrElse og fold
  • Holder de indfangede områder små

Næste: opbygning af forseglede resultathierarkier.

Gratis at komme i gang

Lær Kotlin med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
51
Lektioner
203

Ofte stillede spørgsmål

Er lektionen “runCatching” gratis?

Ja — alle 3 lektioner i læringssporet Kotlin Academy, inklusive “runCatching”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Kotlin Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “runCatching”?

Indfang exceptions som værdier Du øver dig i Kotlin Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Kotlin Academy?

Der kræves ingen tidligere erfaring. Kotlin Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.

Hvor lang tid tager lektionen “runCatching”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Kotlin Academy-lektion?

Ja. Alle Kotlin Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Result-typen
  2. runCatching
  3. Sealed Result-hierarkier
  4. Funktionel fejlhåndtering
← Tilbage til Kotlin Academy