Sobes.tech
Junior — Middle

Czym różnią się klasy Error i Exception w kontekście obsługi błędów?

sobes.tech AI

Odpowiedź od AI

W iOS (Swift) Error jest protokołem, który muszą implementować typy opisujące błędy, które mogą być rzucane i obsługiwane. Exception jako odrębny typ nie istnieje w Swift, ale w innych językach (np. Objective-C) wyjątki (NSException) są używane do krytycznych błędów, które zazwyczaj nie są obsługiwane przez zwykły mechanizm try-catch.

W Swift zaleca się używanie Error i obsługę przez do-try-catch dla kontrolowanych błędów, a nie wyjątków, które są przeznaczone na nieprzewidziane awarie.

Przykład obsługi błędu w Swift:

enum FileError: Error {
    case fileNotFound
    case unreadable
}

func readFile() throws {
    throw FileError.fileNotFound
}

do {
    try readFile()
} catch FileError.fileNotFound {
    print("Nie znaleziono pliku")
} catch {
    print("Inny błąd")
}