0Pricing
Swift Academy · Lekcja

do/catch i definiowanie błędów (enums)

Definiujcie enums błędów, zgłaszajcie je z funkcji i obsługujcie niepowodzenia za pomocą wzorców do/catch (konkretne przypadki, catch let, ogólny catch).

do/catch i definiowanie błędów (enums) to bezpłatna lekcja Swift Academy na CoddyKit. To lekcja 2 z 3. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Swift Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Swift Academy zawiera 3 lekcji w sumie.

Przegląd

Ta lekcja koncentruje się na definiowaniu typowanych błędów i obsługiwaniu ich za pomocą do/catch. Zgłosisz enum i przechwycisz konkretne przypadki, aby jasno określić sposoby odzyskiwania po błędach.

Enum błędów

Zdefiniuj własny enum zgodny z Error. Wartości skojarzone pozwalają dodać przydatny kontekst.

enum FileError: Error {
    case notFound(path: String)
    case unreadable(path: String)
    case corrupted
}
print("Defined FileError enum")

Podstawy zgłaszania błędów

Oznaczaj funkcje, które mogą zakończyć się niepowodzeniem, za pomocą throws. Zgłaszaj konkretne przypadki, gdy warunki wstępne nie są spełnione.

func loadText(from path: String) throws -> String {
    if path.isEmpty { throw FileError.notFound(path: "(empty)") }
    if !path.hasSuffix(".txt") { throw FileError.unreadable(path: path) }
    return "Contents of " + path
}
print("Ready to throw on bad input")

Konkretne bloki catch

Używaj do/try/catch. Umieszczaj konkretne przypadki catch przed ogólnym blokiem catch obsługującym pozostałe błędy.

do {
    let text = try loadText(from: "notes.txt")
    print(text)
} catch FileError.notFound(let p) {
    print("Missing file at:", p)
} catch FileError.unreadable(let p) {
    print("Cannot read:", p)
} catch {
    print("Other error:", error)
}

catch let i switch

Użyj catch let error as YourError, a następnie switch, aby przygotować komunikaty przyjazne dla użytkownika.

do {
    _ = try loadText(from: "")
} catch let error as FileError {
    switch error {
    case .notFound(let p): print("not found:", p)
    case .unreadable(let p): print("unreadable:", p)
    case .corrupted: print("file corrupted")
    }
} catch {
    print("unexpected:", error.localizedDescription)
}

Odzyskiwanie a ponowne zgłaszanie

Zdecyduj, czy chcesz recover (zwrócić wartość zastępczą), czy użyć rethrow, aby przekazać błąd wywołującemu. Zasady powinny być proste i przewidywalne.

func mustLoad(_ path: String) throws -> String {
    do {
        return try loadText(from: path)
    } catch FileError.notFound {
        // simple recovery: default content
        return "New file template"
    } catch {
        // escalate unknown issues
        throw error
    }
}
print(try? mustLoad("report.txt") ?? "(nil)")

Wzorzec własnych błędów

Szybki test: Jaki jest idiomatyczny sposób definiowania własnych błędów?

Podsumowanie

Podsumowanie: Definiuj typowane błędy za pomocą enuma zgodnego z Error, zgłaszaj konkretne przypadki przez throw i obsługuj je za pomocą do/catch, umieszczając najpierw konkretne gałęzie, a na końcu ogólną.

Często zadawane pytania

Czy lekcja „do/catch i definiowanie błędów (enums)” jest bezpłatna?

Tak — pełny tekst „do/catch i definiowanie błędów (enums)” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Swift Academy, przejdź na CoddyKit PRO. Kurs Swift Academy zawiera 3 lekcji w sumie.

Co nauczysz się w „do/catch i definiowanie błędów (enums)”?

Definiujcie enums błędów, zgłaszajcie je z funkcji i obsługujcie niepowodzenia za pomocą wzorców do/catch (konkretne przypadki, catch let, ogólny catch). Ćwiczysz Swift Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Swift Academy?

Nie wymagamy żadnego doświadczenia. Swift Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 3.

Ile czasu zajmuje lekcja „do/catch i definiowanie błędów (enums)”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Swift Academy?

Tak. Każda lekcja Swift Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Łączenie optionali i podstawy obsługi błędów
  2. do/catch i definiowanie błędów (enums)
  3. Typy Result — Result
← Powrót do Swift Academy