try await und Fehlerweitergabe
Verwenden Sie try await mit fehlerwerfenden asynchronen Funktionen, behandeln Sie Fehler mit do/catch und geben Sie Fehler sauber nach oben weiter, einschließlich CancellationError .
try await und Fehlerweitergabe ist eine kostenlose Swift Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 3. 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 Swift Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Swift Academy-Kurs umfasst insgesamt 3 Lektionen.
Warum try await?
try await ruft eine asynchrone Funktion mit Fehlerauslösung auf. Löst sie einen Fehler aus, wird dieser weitergegeben, sofern Sie ihn nicht abfangen. Sie können auch try? verwenden, um ihn in ein Optional umzuwandeln.
Asynchron mit Fehlerauslösung + do/catch
Erstellen Sie eine asynchrone Funktion mit Fehlerauslösung und rufen Sie sie innerhalb von do/catch mit try await auf, um Fehler zu behandeln.
enum NetError: Error { case offline; case badStatus(Int) }
func fetchNumber(from ok: Bool) async throws -> Int {
try await Task.sleep(nanoseconds: 100_000_000)
if !ok { throw NetError.offline }
return 7
}
Task {
do {
let n = try await fetchNumber(from: true)
print("value:", n) // 7
} catch {
print("failed:", error) // handled here
}
}Fehler umwandeln
Verwenden Sie try?, um statt einer Fehlerauslösung ein Optional zu erhalten. Vermeiden Sie try!, sofern Sie nicht sicher sind, dass kein Fehler auftreten kann.
Task {
// try? converts failure to nil
let maybe = try? await fetchNumber(from: false)
print("optional result:", String(describing: maybe)) // nil on error
// ⚠️ try! will crash if an error is thrown — avoid in production
// let forced = try! await fetchNumber(from: false)
}Fehler weitergeben
Kennzeichnen Sie aufrufende Funktionen mit async throws, um Fehler nach oben zu propagieren; sie können dann an einer höheren Grenze behandelt werden.
func loadProfile(ok: Bool) async throws -> String {
let id = try await fetchNumber(from: ok) // propagate on error
return "id:\\(id)"
}
Task {
do {
let s = try await loadProfile(ok: true)
print(s) // "id:7"
} catch {
print("propagated:", error)
}
}Spezifische catch-Blöcke
Verwenden Sie catch-Blöcke mit Pattern-Matching. Behandeln Sie CancellationError zuerst, damit Beendigungspfade schnell und ohne unnötige Ausgaben bleiben.
enum FileError: Error { case notFound }
func mightCancel() async throws {
for _ in 0..<5 {
try Task.checkCancellation() // throws CancellationError
try await Task.sleep(nanoseconds: 30_000_000)
}
}
Task {
let t = Task { try await mightCancel() }
t.cancel()
do {
try await t.value
} catch is CancellationError {
print("cancelled cleanly") // handle cancellation separately
} catch {
print("other error:", error)
}
}Richtlinien
Tipps:
- Geben Sie Fehler mit try weiter, bis Sie eine Grenze erreichen, an der eine Entscheidung möglich ist (UI, CLI oder Top-Level-Task).
- Bevorzugen Sie zur besseren Verständlichkeit Domänenfehler (Enums).
- Wandeln Sie nur dann mit try? um, wenn das Fehlen eines Werts akzeptabel ist.
- Behandeln Sie CancellationError gesondert.
Fehlerbehandlung mit try await
Kurztest: Was geschieht bei Fehlern mit try await f()?
Zusammenfassung
Zusammenfassung: Verwenden Sie try await mit asynchronen Funktionen, die Fehler auslösen können, geben Sie Fehler aus Hilfsfunktionen weiter, wandeln Sie sie mit try? um, wenn ein Optional ausreicht, und fangen Sie CancellationError ausdrücklich ab.
Häufig gestellte Fragen
Ist die Lektion „try await und Fehlerweitergabe“ kostenlos?
Ja — der vollständige Text von „try await und Fehlerweitergabe“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Swift Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Swift Academy-Kurs umfasst insgesamt 3 Lektionen.
Was lerne ich in „try await und Fehlerweitergabe“?
Verwenden Sie try await mit fehlerwerfenden asynchronen Funktionen, behandeln Sie Fehler mit do/catch und geben Sie Fehler sauber nach oben weiter, einschließlich CancellationError . Du übst Swift 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 Swift Academy zu starten?
Keine Vorkenntnisse erforderlich. Swift 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 3 von 3.
Wie lange dauert die Lektion „try await und Fehlerweitergabe“?
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 Swift Academy-Lektion Code schreiben und ausführen?
Ja. Jede Swift 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.
Alle Lektionen in diesem Kurs
- Strukturierte Nebenläufigkeit, asynchrone Funktionen
- async let, Task und Abbruch
- try await und Fehlerweitergabe