runCatching
Indfang exceptions som værdier
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
getOrElseogfold - Holder de indfangede områder små
Næste: opbygning af forseglede resultathierarkier.
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.