Hata İşleme ve HTTP Durum Kodları
Yanıt durum kodlarını denetleyin ve hataları türlendirilmiş alan hatalarına eşleyin.
Hata İşleme ve HTTP Durum Kodları, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Swift Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Swift Academy kursu toplamda 4 dersten oluşur.
HTTP Durum Kodu Aralıkları
HTTP yanıtları başarıyı veya başarısızlığı durum kodlarıyla bildirir: 2xx başarı, 3xx yönlendirme, 4xx istemci hatası, 5xx sunucu hatasıdır.
// 200 OK, 201 Created
// 400 Bad Request, 401 Unauthorized, 404 Not Found
// 500 Internal Server ErrorSwift'te Durumu Denetleme
Asenkron bir isteğin ardından URLResponse'u HTTPURLResponse türüne dönüştürün ve statusCode değerini denetleyin.
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)
}Türü Belirli Ağ Hataları
Tüm yakalama bloklarının kapsamlı olmasını sağlamak için ağ hatalarında kullanılacak, türü belirli bir hata enum'u tanımlayın.
enum NetworkError: Error {
case invalidURL
case invalidResponse
case httpError(Int)
case decodingError(Error)
case noData
}Durum Kodlarını Hatalara Eşleme
Ham tamsayılar yerine anlamlı alan hataları üretmek için durum kodlarına göre seçim yapın.
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)
}Hata Yanıtlarının Kodunu Çözme
Durum bir hata belirttiğinde gövde çoğu zaman JSON biçiminde bir hata iletisi içerir. Daha iyi tanılama için bu iletinin kodunu çözün.
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")
}async İçinde Hataları Yayma
Swift'in yapılandırılmış eşzamanlılığı hataları doğal olarak yayar: fırlatılan bir hata, TaskGroup içindeki kardeş görevleri iptal eder.
async let users = fetchUsers()
async let posts = fetchPosts()
let (u, p) = try await (users, posts) // if either throws, both cancelBelirli Hataları Yakalama
Çağıran kodda farklı hata türlerini ayrı ayrı işlemek için türü belirli catch blokları kullanın.
do {
let items = try await fetchItems()
} catch NetworkError.unauthorized {
showLoginScreen()
} catch NetworkError.httpError(let code) {
print("HTTP Error: \(code)")
} catch {
print("Unexpected: \(error)")
}URLError Kodları
URLError bağlantı sorunlarını açıklar: .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")
}Ağ İşlemleri için Result Sarmalayıcısı
Çağıranların hataları try/catch kullanmadan işlemesini istediğinizde, getirme işlevlerinden Result döndürün.
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)
}
}Hata Günlüğü Tutma
Üretim ortamında hata ayıklamayı kolaylaştırmak için ağ hatalarını ilgili bağlamla (URL, durum kodu, gövde) günlüğe kaydedin.
func log(_ error: NetworkError, url: URL) {
print("[Network] \(url.absoluteString) → \(error)")
}Kullanıcıya Gösterilen Hata İletileri
Teknik hataları kullanıcı dostu dizelere eşleyin. Ham HTTP durum kodlarını kullanıcı arayüzünde asla göstermeyin.
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."
}
}
}Hızlı Kontrol
Başarılı bir yanıtı hangi HTTP durum kodu aralığı belirtir?
Ders Özeti
URLSession.data(from:) sonrasında türü HTTPURLResponse olarak dönüştürün ve statusCode değerini denetleyin. Kodları türü belirli Error durumlarına eşleyin. Bağlantı sorunları için URLError kullanın. Hataları try/throw ile yayın ve türü belirli catch bloklarıyla yakalayın.
Sıkça Sorulan Sorular
“Hata İşleme ve HTTP Durum Kodları” dersi ücretsiz mi?
Evet — “Hata İşleme ve HTTP Durum Kodları” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Swift Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Swift Academy kursu toplamda 4 dersten oluşur.
“Hata İşleme ve HTTP Durum Kodları” dersinde ne öğreneceğim?
Yanıt durum kodlarını denetleyin ve hataları türlendirilmiş alan hatalarına eşleyin. Swift Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Swift Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Swift Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“Hata İşleme ve HTTP Durum Kodları” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Swift Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Swift Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- async/await ile URLSession data(from:)
- Codable: JSON Kodlama ve Kod Çözme
- Hata İşleme ve HTTP Durum Kodları
- Yeniden Deneme Mantığı ve Arka Plan URLSession