0Pricing
Swift Academy · Aula

Tipos de erro personalizados com LocalizedError

Crie enums de erro completos que estejam em conformidade com Error e LocalizedError.

Tipos de erro personalizados com LocalizedError é uma aula grátis de Swift Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Swift Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Swift Academy inclui 4 aulas no total.

Boas-vindas

Tipos de erro bem projetados carregam contexto suficiente para diagnosticar problemas e exibir mensagens amigáveis para o usuário. `LocalizedError` fornece os pontos de extensão para isso.

Enumeração de erro básica

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

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

Contexto de erro aninhado

```swift enum APIError: Error { case server(statusCode: Int, body: String) case decode(underlying: DecodingError) case timeout } ``` Mantenha o erro subjacente para que ele possa ser registrado ou exibido em compilações de depuração.

Lançando erros personalizados

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

Capturando casos específicos

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

Padrão de encapsulamento de erros

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

Erros Equatable para testes

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

Verificação rápida

Qual protocolo fornece `errorDescription` para mensagens de erro voltadas ao usuário?

Recapitulação

Principais conclusões: • Faça os erros adotarem `LocalizedError` para fornecer mensagens voltadas ao usuário • Use valores associados para transportar contexto (códigos de status, datas) • Encapsule erros de nível inferior em enumerações específicas do domínio • Erros `Equatable` simplificam os testes unitários • `CustomDebugStringConvertible` ajuda na depuração Próximo: fazendo a ponte entre Result e async/await.

Perguntas Frequentes

A aula “Tipos de erro personalizados com LocalizedError” é grátis?

Sim — o texto completo de “Tipos de erro personalizados com LocalizedError” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Swift Academy, atualize para CoddyKit PRO. O curso de Swift Academy inclui 4 aulas no total.

O que vou aprender em “Tipos de erro personalizados com LocalizedError”?

Crie enums de erro completos que estejam em conformidade com Error e LocalizedError. Você pratica Swift Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Swift Academy?

Nenhuma experiência prévia é necessária. Swift Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “Tipos de erro personalizados com LocalizedError”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Swift Academy?

Sim. Cada aula de Swift Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Fundamentos de Result
  2. map e flatMap em Result
  3. Tipos de erro personalizados com LocalizedError
  4. Integração de Result com async/await
← Voltar para Swift Academy