Fehler fängst du mit try/catch; try ist ebenfalls ein Ausdruck. Für nebenläufige Aufgaben bietet Kotlin Coroutines: Eine Funktion mit suspend kann pausieren, ohne einen Thread zu blockieren. Mit launch startest du eine Coroutine, mit async/await erhältst du ein Ergebnis.
Coroutines sind Teil der Bibliothek kotlinx.coroutines.
import kotlinx.coroutines.*
suspend fun lade(): String {
delay(1000) // pausiert, blockiert nicht
return "Daten"
}
fun main() = runBlocking {
val ergebnis = async { lade() }
println(ergebnis.await())
val zahl = try { "abc".toInt() } catch (e: NumberFormatException) { -1 }
println(zahl) // -1
}Merke
tryist ein Ausdrucksuspendmarkiert pausierbare Funktionenlaunchundasyncstarten Coroutines
Aufgabe
Starte zwei Coroutines mit `async` und addiere ihre Ergebnisse.