Foutafhandeling en HTTP-statuscodes
Responsstatuscodes controleren en fouten naar getypeerde domeinfouten vertalen.
Foutafhandeling en HTTP-statuscodes is een gratis Swift Academy-les op CoddyKit. Dit is les 3 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Swift Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Swift Academy bevat in totaal 4 lessen.
Bereiken van HTTP-statuscodes
HTTP-reacties geven via statuscodes aan of een verzoek is geslaagd of mislukt: 2xx succes, 3xx omleiding, 4xx clientfout, 5xx serverfout.
// 200 OK, 201 Created
// 400 Bad Request, 401 Unauthorized, 404 Not Found
// 500 Internal Server ErrorStatus controleren in Swift
Zet URLResponse om naar HTTPURLResponse en controleer statusCode na een asynchroon verzoek.
let (data, response) = try await URLSession.shared.data(from: url)
guard let http = response as? HTTPURLResponse else {
throw NetworkError.invalidResponse
}
guard (200..<300).contains(http.statusCode) else {
throw NetworkError.httpError(http.statusCode)
}Getypeerde netwerkfouten
Definieer een getypeerde opsomming van netwerkfouten, zodat je volledige catch-blokken kunt schrijven.
enum NetworkError: Error {
case invalidURL
case invalidResponse
case httpError(Int)
case decodingError(Error)
case noData
}Statuscodes aan fouten koppelen
Gebruik een switch op statuscodes om betekenisvolle domeinfouten te genereren in plaats van onbewerkte gehele getallen.
switch http.statusCode {
case 200..<300: break // success
case 401: throw NetworkError.unauthorized
case 404: throw NetworkError.notFound
case 500..<600: throw NetworkError.serverError(http.statusCode)
default: throw NetworkError.httpError(http.statusCode)
}Foutreacties decoderen
Wanneer de status een fout aangeeft, bevat de hoofdtekst vaak een JSON-foutmelding. Decodeer die voor betere diagnostiek.
if http.statusCode != 200 {
struct APIError: Decodable { var message: String }
let apiError = try? JSONDecoder().decode(APIError.self, from: data)
throw NetworkError.serverMessage(apiError?.message ?? "Unknown error")
}Fouten doorgeven in async
De gestructureerde gelijktijdigheid van Swift geeft fouten op natuurlijke wijze door: een gegenereerde fout annuleert zustertaken in een TaskGroup.
async let users = fetchUsers()
async let posts = fetchPosts()
let (u, p) = try await (users, posts) // if either throws, both cancelSpecifieke fouten afhandelen
Gebruik getypeerde catch-blokken om verschillende soorten fouten in aanroepende code afzonderlijk af te handelen.
do {
let items = try await fetchItems()
} catch NetworkError.unauthorized {
showLoginScreen()
} catch NetworkError.httpError(let code) {
print("HTTP Error: \(code)")
} catch {
print("Unexpected: \(error)")
}URLError-codes
URLError beschrijft verbindingsproblemen: .notConnectedToInternet, .timedOut, .cannotFindHost.
do {
let (data, _) = try await URLSession.shared.data(from: url)
} catch let urlError as URLError where urlError.code == .notConnectedToInternet {
print("No internet connection")
}Result-wrapper voor netwerkcommunicatie
Geef Result terug vanuit fetchfuncties wanneer je wilt dat aanroepende code fouten zonder try/catch afhandelt.
func fetchUser() async -> Result<User, NetworkError> {
do {
let user = try await performFetch()
return .success(user)
} catch let e as NetworkError {
return .failure(e)
} catch {
return .failure(.unknown)
}
}Fouten registreren
Registreer netwerkfouten met relevante context (URL, statuscode, hoofdtekst) om foutopsporing in productie te vergemakkelijken.
func log(_ error: NetworkError, url: URL) {
print("[Network] \(url.absoluteString) → \(error)")
}Foutmeldingen voor gebruikers
Koppel technische fouten aan gebruiksvriendelijke teksten. Toon nooit onbewerkte HTTP-statuscodes in de gebruikersinterface.
extension NetworkError: LocalizedError {
var errorDescription: String? {
switch self {
case .unauthorized: return "Please log in again."
case .notFound: return "The requested item was not found."
case .serverError: return "Server error. Please try again later."
default: return "Something went wrong."
}
}
}Korte controle
Welke reeks HTTP-statuscodes geeft een geslaagde reactie aan?
Samenvatting van de les
Na URLSession.data(from:) zet je de reactie om naar HTTPURLResponse en controleer je statusCode. Koppel codes aan getypeerde gevallen van Error. Gebruik URLError voor verbindingsproblemen. Geef fouten door met try/throw en vang ze op met getypeerde catch-blokken.
Leer Swift met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 122
- Lessen
- 409
Veelgestelde vragen
Is de les “Foutafhandeling en HTTP-statuscodes” gratis?
Ja — je kunt hier op het web alle 3 lessen van het leerpad Swift Academy, waaronder “Foutafhandeling en HTTP-statuscodes”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Swift Academy bevat in totaal 4 lessen.
Wat leer ik in “Foutafhandeling en HTTP-statuscodes”?
Responsstatuscodes controleren en fouten naar getypeerde domeinfouten vertalen. Je oefent met Swift Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Swift Academy te beginnen?
Ervaring vooraf is niet nodig. Swift Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.
Hoe lang duurt de les “Foutafhandeling en HTTP-statuscodes”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Swift Academy?
Ja. Elke les over Swift Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- URLSession data(from:) met async/await
- Codable: JSON coderen en decoderen
- Foutafhandeling en HTTP-statuscodes
- Retrylogica en URLSession op de achtergrond