0Pricing
Swift Academy · Lezione

Tipi di errore personalizzati con LocalizedError

Progettare enum di errore dettagliati conformi a Error e LocalizedError.

Tipi di errore personalizzati con LocalizedError è una lezione Swift Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Swift Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Swift Academy include 4 lezioni in totale.

Benvenuto

I tipi di errore ben progettati contengono un contesto sufficiente per diagnosticare i problemi e mostrare messaggi comprensibili all'utente. `LocalizedError` fornisce i punti di integrazione necessari.

Enum di errori di base

```swift enum AuthError: Error { case invalidCredentials case accountLocked(until: Date) case networkUnavailable } ```

Protocollo LocalizedError

```swift extension AuthError: LocalizedError { var errorDescription: String? { switch self { case .invalidCredentials: return "Username or password is incorrect." case .accountLocked(let date): return "Account locked until \(date.formatted())." case .networkUnavailable: return "No internet connection." } } } print(AuthError.invalidCredentials.localizedDescription) ```

failureReason e recoverySuggestion

```swift extension AuthError: LocalizedError { var failureReason: String? { "Authentication service rejected the request." } var recoverySuggestion: String? { "Reset your password or contact support." } } ```

Contesto nidificato degli errori

```swift enum APIError: Error { case server(statusCode: Int, body: String) case decode(underlying: DecodingError) case timeout } ``` Conservi l'errore sottostante, così potrà registrarlo nei log o visualizzarlo nelle build di debug.

Generare errori personalizzati

```swift func login(user: String, pass: String) throws -> Token { guard !user.isEmpty && !pass.isEmpty else { throw AuthError.invalidCredentials } // ... } ```

Gestire casi specifici

```swift do { let token = try login(user: u, pass: p) } catch AuthError.invalidCredentials { showAlert("Bad credentials") } catch AuthError.accountLocked(let date) { showAlert("Locked until \(date)") } catch { showAlert(error.localizedDescription) } ```

CustomDebugStringConvertible

```swift extension AuthError: CustomDebugStringConvertible { var debugDescription: String { "AuthError.\(self)" } } ```

Pattern per l'avvolgimento degli errori

```swift enum AppError: Error { case auth(AuthError) case api(APIError) case unknown(Error) } func process() throws { do { try login() } catch let e as AuthError { throw AppError.auth(e) } catch { throw AppError.unknown(error) } } ```

Errori Equatable per i test

```swift enum FetchError: Error, Equatable { case notFound case serverError(code: Int) } XCTAssertEqual(error, FetchError.notFound) ```

Verifica rapida

Quale protocollo fornisce `errorDescription` per i messaggi di errore rivolti all'utente?

Riepilogo

Punti chiave: • Faccia conformare gli errori a `LocalizedError` per i messaggi rivolti all'utente • Utilizzi i valori associati per trasportare il contesto (codici di stato, date) • Avvolga gli errori di livello inferiore in enum specifici del dominio • Gli errori `Equatable` semplificano i test unitari • `CustomDebugStringConvertible` facilita il debug Prossimo argomento: collegare Result ad async/await.

Domande Frequenti

La lezione «Tipi di errore personalizzati con LocalizedError» è gratuita?

Sì — il testo completo di «Tipi di errore personalizzati con LocalizedError» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Swift Academy, passa a CoddyKit PRO. Il corso Swift Academy include 4 lezioni in totale.

Cosa imparerò in «Tipi di errore personalizzati con LocalizedError»?

Progettare enum di errore dettagliati conformi a Error e LocalizedError. Eserciti Swift Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Swift Academy?

Non è richiesta alcuna esperienza precedente. Swift Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Tipi di errore personalizzati con LocalizedError»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Swift Academy?

Sì. Ogni lezione Swift Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Fondamenti di Result
  2. map e flatMap su Result
  3. Tipi di errore personalizzati con LocalizedError
  4. Collegare Result ad async/await
← Torna a Swift Academy