0Pricing
Swift Academy · Lektion

Fehlerbehandlung und HTTP-Statuscodes

Prüfen Sie Antwortstatuscodes und ordnen Sie Fehler typisierten Domänenfehlern zu.

Fehlerbehandlung und HTTP-Statuscodes ist eine kostenlose Swift Academy-Lektion auf CoddyKit. Dies ist Lektion 3 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 Swift Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.

HTTP-Statuscodebereiche

HTTP-Antworten signalisieren Erfolg oder Fehler über Statuscodes: 2xx steht für Erfolg, 3xx für Weiterleitung, 4xx für einen Clientfehler und 5xx für einen Serverfehler.

// 200 OK, 201 Created
// 400 Bad Request, 401 Unauthorized, 404 Not Found
// 500 Internal Server Error

Status in Swift prüfen

Wandeln Sie URLResponse in HTTPURLResponse um und prüfen Sie nach einer asynchronen Anfrage den statusCode.

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)
}

Typisierte Netzwerkfehler

Definieren Sie ein typisiertes Fehler-Enum für Netzwerkfehler, damit catch-Blöcke alle Fälle vollständig behandeln können.

enum NetworkError: Error {
  case invalidURL
  case invalidResponse
  case httpError(Int)
  case decodingError(Error)
  case noData
}

Statuscodes Fehlern zuordnen

Verzweigen Sie anhand der Statuscodes, um aussagekräftige Domänenfehler statt bloßer Ganzzahlen auszugeben.

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)
}

Fehlerantworten dekodieren

Wenn der Status einen Fehler anzeigt, enthält der Body häufig eine JSON-Fehlermeldung. Dekodieren Sie sie, um bessere Diagnosen zu ermöglichen.

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")
}

Fehler in async weitergeben

Swifts strukturierte Nebenläufigkeit gibt Fehler auf natürliche Weise weiter: Ein ausgelöster Fehler bricht in einer TaskGroup nebengeordnete Tasks ab.

async let users = fetchUsers()
async let posts = fetchPosts()
let (u, p) = try await (users, posts) // if either throws, both cancel

Bestimmte Fehler abfangen

Verwenden Sie typisierte catch-Blöcke, um verschiedene Fehlerarten im aufrufenden Code getrennt zu behandeln.

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 beschreibt Verbindungsfehler: .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 für Netzwerke

Geben Sie aus Abruffunktionen Result zurück, wenn aufrufender Code Fehler ohne try/catch behandeln soll.

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)
  }
}

Fehlerprotokollierung

Protokollieren Sie Netzwerkfehler mit relevantem Kontext (URL, Statuscode, Body), um das Debugging in der Produktion zu erleichtern.

func log(_ error: NetworkError, url: URL) {
  print("[Network] \(url.absoluteString) → \(error)")
}

Benutzerfreundliche Fehlermeldungen

Ordnen Sie technische Fehler benutzerfreundlichen Texten zu. Zeigen Sie niemals rohe HTTP-Statuscodes in der Benutzeroberfläche an.

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."
    }
  }
}

Kurze Überprüfung

Welcher HTTP-Statuscodebereich zeigt eine erfolgreiche Antwort an?

Zusammenfassung der Lektion

Wandeln Sie nach URLSession.data(from:) in HTTPURLResponse um und prüfen Sie statusCode. Ordnen Sie Codes typisierten Error-Fällen zu. Verwenden Sie URLError für Verbindungsfehler. Geben Sie Fehler mit try/throw weiter und fangen Sie sie mit typisierten catch-Blöcken ab.

Häufig gestellte Fragen

Ist die Lektion „Fehlerbehandlung und HTTP-Statuscodes“ kostenlos?

Ja — der vollständige Text von „Fehlerbehandlung und HTTP-Statuscodes“ 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 4 Lektionen.

Was lerne ich in „Fehlerbehandlung und HTTP-Statuscodes“?

Prüfen Sie Antwortstatuscodes und ordnen Sie Fehler typisierten Domänenfehlern zu. 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 4.

Wie lange dauert die Lektion „Fehlerbehandlung und HTTP-Statuscodes“?

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

  1. URLSession data(from:) mit async/await
  2. Codable: JSON kodieren und dekodieren
  3. Fehlerbehandlung und HTTP-Statuscodes
  4. Wiederholungslogik und Hintergrund-URLSession
← Zurück zu Swift Academy