runCatching
Erfassen Sie Ausnahmen als Werte
runCatching ist eine kostenlose Kotlin Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Kotlin Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Kotlin Academy-Kurs umfasst insgesamt 4 Lektionen.
Exceptions abfangen
runCatching führt einen Block aus und verpackt sein Ergebnis in ein Result: Der Rückgabewert wird zu einem Erfolg, jede ausgelöste Exception zu einem Fehler. Ein try/catch ist nicht erforderlich.
Grundlegende Verwendung
Übergeben Sie eine Lambda-Funktion; der letzte Ausdruck ist der Erfolgswert.
fun main() {
val r = runCatching { 10 / 2 }
println(r.isSuccess)
println(r.getOrNull())
}Einen ausgelösten Fehler abfangen
Wenn der Block eine Exception auslöst, speichert runCatching die Exception, statt sie weiterzugeben.
fun main() {
val r = runCatching { 10 / 0 }
println(r.isFailure)
println(r.exceptionOrNull()?.message)
}Riskantes Parsen wrappen
Eine häufige Verwendung besteht darin, Aufrufe zu wrappen, die eine Exception auslösen können, etwa beim Parsen, sodass der Fehler zu einem behandelbaren Wert wird.
fun main() {
val good = runCatching { "42".toInt() }
val bad = runCatching { "abc".toInt() }
println(good.getOrNull())
println(bad.getOrNull())
}runCatching als Receiver
Sie können runCatching auf einem Receiver-Objekt aufrufen; innerhalb des Blocks verweist this auf dieses Objekt. Das ist nützlich, um Operationen auf einem Wert zu verketten.
fun main() {
val text = " 99 "
val r = text.runCatching { trim().toInt() }
println(r.getOrNull())
}Inline-Fehlerbehandlung
Kombinieren Sie runCatching mit getOrElse, um direkt an der Aufrufstelle einen Ersatzwert bereitzustellen.
fun main() {
val n = runCatching { "oops".toInt() }.getOrElse { -1 }
println(n)
}fold für beide Zweige
fold behandelt Erfolg und Fehler in einem Aufruf und gibt aus beiden Zweigen einen einzelnen Wert zurück.
fun main() {
val message = runCatching { "50".toInt() }.fold(
onSuccess = { "got " + it },
onFailure = { "error: " + it.message }
)
println(message)
}try/catch refaktorieren
Wo Sie vielleicht ein try/catch schreiben würden, das einen Wert zurückgibt, ist runCatching prägnanter und bewahrt das Ergebnis als Daten.
fun safeDivide(a: Int, b: Int): Result<Int> =
runCatching { a / b }
fun main() {
println(safeDivide(8, 2).getOrNull())
println(safeDivide(8, 0).exceptionOrNull()?.message)
}Vorsicht bei zu weit gefasstem Abfangen
runCatching fängt alle Throwables ab, einschließlich solcher, die Sie möglicherweise nicht verschlucken möchten. Vermeiden Sie es, riesige Blöcke zu wrappen; halten Sie den abgefangenen Bereich klein und bewusst gewählt.
Transformationen verketten
Da runCatching ein Result liefert, können Sie direkt map oder recover daran verketten. Diese behandeln wir in der nächsten Lektion.
fun main() {
val r = runCatching { "7".toInt() }.map { it * 10 }
println(r.getOrNull())
}Warum das hilfreich ist
runCatching verbindet Code, der Exceptions auslöst, mit der wertbasierten Welt von Result. So können Sie funktionale Fehlerbehandlung auch beim Aufruf von APIs verwenden, die Exceptions auslösen.
Kurzer Test
Testen Sie Ihr Verständnis von runCatching.
Zusammenfassung
Sie haben runCatching kennengelernt:
- Verpackt das Ergebnis eines Blocks in ein
Result - Wandelt ausgelöste Exceptions in Fehler um
- Lässt sich mit
getOrElseundfoldkombinieren - Halten Sie abgefangene Bereiche klein
Als Nächstes: versiegelte Result-Hierarchien erstellen.
Häufig gestellte Fragen
Ist die Lektion „runCatching“ kostenlos?
Ja — der vollständige Text von „runCatching“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Kotlin Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Kotlin Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „runCatching“?
Erfassen Sie Ausnahmen als Werte Du übst Kotlin Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Kotlin Academy zu starten?
Keine Vorkenntnisse erforderlich. Kotlin Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „runCatching“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Kotlin Academy-Lektion Code schreiben und ausführen?
Ja. Jede Kotlin Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.