Tratamento de Exceção com erros customizados em Swift
Utilizar erros customizados pode deixar seu código mais compreensível e organizado, pois adiciona uma "descrição" para determinados erros
Table of contents
Criação
Primeiro, precisamos pensar em um contexto para criar nossos erros. Vamos supor que existe um serviço que consome uma API que fornece dados sobre filmes, e iremos tratar os possíveis erros. Os erros mais comuns são:
- Recurso não encontrado(404)
- Proibido(403)
- Erro interno(500)
- Serviço Indisponível(503)
Os números associados aos erros são conhecidos como "Código de Status HTTP"(HTTP Status Code).
No trecho de código abaixo, iremos criar nossos erros customizados:
enum APIError: Error {
case NotFound // Recurso não encontrado
case Forbidden // Proibido
case InternalError // Erro interno
case ServiceUnavailable // Indisponível
}
Usamos uma estrutura do tipo enum
para definir o conjunto de erros que temos. Para dar continuidade, iremos supor que nosso serviço dispara exceções com os tipos definidos acima quando os respectivos códigos de status HTTP são recebidos.
Tratamento de Exceção
Agora que já temos um conjunto definido de erros, vamos ver como tratar nossas exceções. A linguagem Swift usa, para tratamento de exceções, uma estrutura conhecida como do-try-catch
, que é escrita da seguinte forma:
do {
try execute()
} catch(let exception){
// Tratamento da exceção
}
Adequando o código acima para nosso cenário do serviço de filmes, e supondo que o serviço já está implementado, teríamos o seguinte:
do {
// Tenta obter os dados do filme de id 5201
try MovieService.getById(5201)
} catch(let exception){
// Trata os erros
}
Podemos ir um pouco além do que já vimos. A estrutura do-try-catch permite que tratemos diferentes tipos de exceções, como se fosse um switch-case, da seguinte forma:
do {
// Tenta obter os dados do filme de id 5201
try MovieService.getById(5201)
} catch APIError.NotFound {
// Trata o erro de "Recurso não encontrado
} catch APIError.Forbidden {
// Trata o erro de "Proibido"
} catch APIError.InternalError {
// Trata o erro de "Erro interno
} catch APIError.ServiceUnavailable {
// Trata o erro de "Serviço Indisponível"
}
Com a estrutura acima, conseguimos tratar alguns dos erros mais comuns que podem ocorrer ao fazer uma requisição a um servidor. Vale destacar que não necessariamente essa é a melhor abordagem, mas ela é um bom exemplo de como tratar erros customizados usando a linguagem Swift.
Considerações
Caso você tenha interesse em descobrir mais sobre tratamento de exceções em Swift, você pode ler a documentação. Espero que essa explicação tenha te ajudado!
Gostou deste artigo? Me siga para mais conteúdos como esse!
Minhas redes sociais:
Twitter | Instagram | Youtube.
Até a próxima!👋🏽