SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
14.11.2024

Aula 28: Tratamento de Erros com do-try-catch

O tratamento de erros é um aspecto crítico no desenvolvimento de aplicações robustas. No Swift, você pode lidar com erros de forma elegante utilizando a sintaxe do-try-catch. Nesta aula, vamos explorar como definir erros, lançá-los e tratá-los com do, try e catch.

Definindo um Erro

No Swift, você pode definir seus próprios tipos de erro conformando-se ao protocolo Error. Uma forma de estruturar a representação dos possíveis erros em sua aplicação é utilizando uma enumeração.

enum ErroDeArquivo: Error {
    case arquivoNaoEncontrado
    case permissoesInsuficientes
    case desconhecido
}

Lançando Erros

Você pode definir funções que lançam erros utilizando a palavra-chave throws. Dentro dessas funções, você pode usar a instrução throw para sinalizar que ocorreu um erro.

func lerArquivo(caminho: String) throws -> String {
    // Simulando uma operação de leitura de arquivo
    guard caminho == "caminhoValido.txt" else {
        throw ErroDeArquivo.arquivoNaoEncontrado
    }

    // Simulando leitura bem-sucedida do arquivo
    return "Conteúdo do arquivo"
}

Neste exemplo, a função lerArquivo lançará um erro ErroDeArquivo.arquivoNaoEncontrado se o caminho fornecido não for válido.

Tratando Erros com do-try-catch

Para tratar erros potenciais lançados por uma função, você pode usar a sintaxe do-try-catch. A função que pode lançar um erro é chamada utilizando a palavra-chave try dentro de um bloco do. Se um erro for lançado, a execução salta para o bloco catch apropriado.

do {
    let conteudo = try lerArquivo(caminho: "caminhoInvalido.txt")
    print(conteudo)
} catch ErroDeArquivo.arquivoNaoEncontrado {
    print("Erro: O arquivo não foi encontrado.")
} catch ErroDeArquivo.permissoesInsuficientes {
    print("Erro: Você não tem permissão para acessar este arquivo.")
} catch {
    print("Erro: Ocorreu um erro desconhecido.")
}

Neste código, ao chamar lerArquivo com um caminho inválido, um erro é lançado e capturado no bloco catch correspondente. Você pode definir múltiplos blocos catch para tratar diferentes tipos de erros.

Propagando Erros

Às vezes, você pode querer propagar erros de uma função para outra, em vez de tratá-los imediatamente. Isso pode ser feito marcando a função com throws e permitindo que o erro suba na pilha de chamadas.

func processarArquivo(caminho: String) throws {
    let conteudo = try lerArquivo(caminho: caminho)
    print("Processando conteúdo do arquivo: \(conteudo)")
}

// Chamando a função e tratando erros potenciais
do {
    try processarArquivo(caminho: "caminhoValido.txt")
} catch {
    print("Falha ao processar o arquivo: \(error)")
}

Neste caso, processarArquivo chama lerArquivo, e se lerArquivo lançar um erro, este será propagado para o bloco do onde processarArquivo foi chamado.

Conclusão

Nesta aula, exploramos os fundamentos do tratamento de erros no Swift utilizando do-try-catch. Você aprendeu como definir erros personalizados, lançar erros em funções e tratar erros de maneira elegante utilizando as palavras-chave do, try e catch. O tratamento de erros é essencial para criar aplicações resilientes, portanto, certifique-se de incorporar essas práticas em seu código!

Video

Did you like this article? Rate it from 1 to 5:

Thank you for voting!