3
respostas

[Dúvida] Entendendo os erros

O que retorna o enum?

enum RequestError: Error { case invalidURL case errorRequest(error: String) }

o invalidURL, retorna algo? É padrão do Swift?

Como saber o que passar como parâmetros?

let(data, _) = try await URLSession.shared.data(for: request)

3 respostas

Olá, Gisele! Como vai?

O enum RequestError que você mencionou é uma forma de representar diferentes tipos de erros que podem ocorrer durante uma requisição HTTP. No Swift, enums são usados para definir um conjunto de valores relacionados, e quando um enum adota o protocolo Error, ele pode ser usado para representar erros.

enum RequestError: Error {
    case invalidURL
    case errorRequest(error: String)
}
  1. invalidURL: Este caso do enum não retorna nada por si só. Ele é usado para indicar que a URL fornecida é inválida. Não é um padrão do Swift, mas sim uma convenção que você ou a equipe de desenvolvimento pode definir para lidar com URLs inválidas.

  2. errorRequest(error: String): Este caso do enum permite que você associe uma mensagem de erro específica (do tipo String) ao erro de requisição, o que pode ser útil para depuração ou para fornecer feedback ao usuário.

Para saber o que passar como parâmetros, você deve considerar o contexto em que o erro ocorre. Por exemplo, se você tentar criar uma URL a partir de uma string e falhar, você pode retornar RequestError.invalidURL. Se uma requisição falhar por outro motivo, você pode usar RequestError.errorRequest e passar uma mensagem de erro descritiva.

No seu código, quando você faz a requisição com URLSession.shared.data(for: request), você está usando try e await porque essa função pode lançar erros e é assíncrona. Caso ocorra um erro, ele será capturado e poderá ser tratado como um dos casos do seu enum RequestError.

Espero ter ajudado!

Siga firme nos seus estudos e conte com o fórum sempre que precisar!

Abraços :)

Caso este post tenha lhe ajudado, por favor, marcar como solucionado

Obrigada, então poderia ser qualquer outro nome no enum, é somente para identificar? Não sei se ficou muito claro, mas era essa parte let(data, _), isso é porque URLSession pede esses dois parametros?

Olá, Gisele, como vai?

Exatamente! No enum RequestError, os nomes dos casos (invalidURL e errorRequest) são definidos por você ou pela equipe de desenvolvimento para identificar os diferentes tipos de erros. Você poderia dar outros nomes, desde que sigam a convenção e façam sentido no contexto. Eles são como rótulos que facilitam a identificação e o tratamento de erros no código.

Sobre o trecho let(data, _), ele está relacionado ao retorno da função URLSession.shared.data(for: request). Essa função retorna uma tupla contendo dois valores:

  1. data: O corpo da resposta da requisição HTTP (o que você geralmente processa como JSON ou outro formato).
  2. _: Um valor relacionado aos metadados da resposta, como os cabeçalhos HTTP. O _ é usado quando você não precisa desse valor e deseja ignorá-lo.

Por exemplo, se você quisesse acessar os metadados, poderia fazer assim:

let (data, response) = try await URLSession.shared.data(for: request)

Se precisar de mais alguma explicação, é só avisar! Espero ter ajudado!

Abraços :)