try await e propagazione degli errori
Utilizzi try await con funzioni async che generano errori, gestisca i fallimenti con do/catch e propaghi correttamente gli errori verso l'alto, incluso CancellationError .
try await e propagazione degli errori è una lezione Swift Academy gratuita su CoddyKit. Questa è la lezione 3 di 3. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Swift Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Swift Academy include 3 lezioni in totale.
Perché try await?
try await chiama una funzione async che può generare errori. Se genera un errore, l'errore viene propagato a meno che non lo intercetti. Può anche utilizzare try? per convertirlo in un valore Optional.
Async con errori e do/catch
Crei una funzione async che può generare errori e la chiami con try await all'interno di do/catch per gestire gli errori.
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
}
}Conversione degli errori
Utilizzi try? per ottenere un Optional invece di generare un errore. Eviti try! a meno che non sia certo che l'operazione non possa fallire.
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)
}Propagazione degli errori
Contrassegni i chiamanti come async throws per propagare gli errori verso l'alto; potranno essere gestiti a un livello superiore.
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)
}
}Catch specifici
Utilizzi blocchi catch con pattern matching. Gestisca prima CancellationError per mantenere rapidi e silenziosi i percorsi di arresto.
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)
}
}Linee guida
Suggerimenti:
- Propaghi gli errori con try fino a un confine in grado di decidere, come l'interfaccia utente, la CLI o un Task di livello superiore.
- Preferisca gli errori di dominio, definiti tramite enum, per maggiore chiarezza.
- Converta con try? solo quando l'assenza è accettabile.
- Gestisca CancellationError separatamente.
Gestione degli errori con try await
Verifica rapida: che cosa succede agli errori con try await f()?
Riepilogo
Riepilogo: utilizzi try await con le funzioni async che possono generare errori, propaghi gli errori dagli helper, li converta con try? quando un valore opzionale è sufficiente e intercetti esplicitamente CancellationError.
Domande Frequenti
La lezione «try await e propagazione degli errori» è gratuita?
Sì — il testo completo di «try await e propagazione degli errori» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Swift Academy, passa a CoddyKit PRO. Il corso Swift Academy include 3 lezioni in totale.
Cosa imparerò in «try await e propagazione degli errori»?
Utilizzi try await con funzioni async che generano errori, gestisca i fallimenti con do/catch e propaghi correttamente gli errori verso l'alto, incluso CancellationError . Eserciti Swift Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Swift Academy?
Non è richiesta alcuna esperienza precedente. Swift Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 3.
Quanto tempo richiede la lezione «try await e propagazione degli errori»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Swift Academy?
Sì. Ogni lezione Swift Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Concorrenza strutturata e funzioni async
- async let, Task e cancellazione
- try await e propagazione degli errori