☢️ Aula 45 – Tutorial Golang – Uso de Panic no Tratamento de Erros

☢️Aula 45 – Tutorial Golang – Uso de Panic no Tratamento de Erros

Tutorial Golang

Tutorial Golang

Página principal do blog

Todas as aulas desse curso

Aula 44                                Aula 46

Redes Sociais do Código Fluente:

facebook

 

 


Scarlett Finch

Scarlett Finch é uma influenciadora virtual criada com IA.

Ela é 🎤 cantora e 🎶compositora pop britânica , 20 anos e poucos de idade.

Siga a Scarlett Finch no Instagram:

facebook

 


Conecte-se comigo!

LinkedIn: Fique à vontade para me adicionar no LinkedIn.

Ao conectar-se comigo, você terá acesso a atualizações regulares sobre desenvolvimento web, insights profissionais e oportunidades de networking no setor de tecnologia.

GitHub: Siga-me no GitHub para ficar por dentro dos meus projetos mais recentes, colaborar em código aberto ou simplesmente explorar os repositórios que eu contribuo, o que pode ajudar você a aprender mais sobre programação e desenvolvimento de software.

Recursos e Afiliados

Explorando os recursos abaixo, você ajuda a apoiar nosso site.

Somos parceiros afiliados das seguintes plataformas:

  • https://heygen.com/ – Eleve a produção de seus vídeos com HeyGen! Com esta plataforma inovadora, você pode criar vídeos envolventes utilizando avatares personalizados, ideal para quem busca impactar e conectar com audiências em todo o mundo. HeyGen transforma a maneira como você cria conteúdo, oferecendo ferramentas fáceis de usar para produzir vídeos educativos, demonstrações de produtos e muito mais. Descubra o poder de comunicar através de avatares interativos e traga uma nova dimensão para seus projetos. Experimente HeyGen agora e revolucione sua forma de criar vídeos!
  • letsrecast.ai – Redefina a maneira como você consome artigos com Recast. Esta plataforma transforma artigos longos em diálogos de áudio que são informativos, divertidos e fáceis de entender. Ideal para quem está sempre em movimento ou busca uma forma mais conveniente de se manter informado. Experimente Recast agora.
  • dupdub.com – Explore o universo do marketing digital com DupDub. Esta plataforma oferece ferramentas inovadoras e soluções personalizadas para elevar a sua estratégia de marketing online. Ideal para empresas que buscam aumentar sua visibilidade e eficiência em campanhas digitais. Descubra mais sobre DupDub.
  • DeepBrain AI Studios – Revolucione a criação de conteúdo com a tecnologia de inteligência artificial da DeepBrain AI Studios. Esta plataforma avançada permite que você crie vídeos interativos e apresentações utilizando avatares digitais gerados por IA, que podem simular conversas reais e interações humanas. Perfeito para educadores, criadores de conteúdo e empresas que querem inovar em suas comunicações digitais. Explore DeepBrain AI Studios.
  • Audyo.ai – Transforme a maneira como você interage com conteúdo auditivo com Audyo.ai. Esta plataforma inovadora utiliza inteligência artificial para criar experiências de áudio personalizadas, melhorando a acessibilidade e a compreensão de informações através de podcasts, transcrições automáticas e síntese de voz avançada. Ideal para profissionais de mídia, educadores e qualquer pessoa que deseje acessar informações auditivas de maneira mais eficiente e envolvente. Descubra Audyo.ai e suas possibilidades.
  • Acoust.io – Transforme sua produção de áudio com Acoust.io. Esta plataforma inovadora fornece uma suite completa de ferramentas para criação, edição e distribuição de áudio, ideal para artistas, produtores e empresas de mídia em busca de excelência e inovação sonora. Acoust.io simplifica o processo de levar suas ideias à realidade, oferecendo soluções de alta qualidade que elevam seus projetos de áudio. Experimente Acoust.io agora e descubra um novo patamar de possibilidades para seu conteúdo sonoro.
  • Hostinger – Hospedagem web acessível e confiável. Ideal para quem busca soluções de hospedagem de sites com excelente custo-benefício e suporte ao cliente robusto. Saiba mais sobre a Hostinger.
  • Digital Ocean – Infraestrutura de nuvem para desenvolvedores. Oferece uma plataforma de nuvem confiável e escalável projetada especificamente para desenvolvedores que precisam de servidores virtuais, armazenamento e networking. Explore a Digital Ocean.
  • One.com – Soluções simples e poderosas para o seu site. Uma escolha ideal para quem busca registrar domínios, hospedar sites ou criar presença online com facilidade e eficiência. Visite One.com.

Educação e Networking

Amplie suas habilidades e sua rede participando de cursos gratuitos e comunidades de desenvolvedores:

Canais do Youtube

Explore nossos canais no YouTube para uma variedade de conteúdos educativos e de entretenimento, cada um com um foco único para enriquecer sua experiência de aprendizado e lazer.

Toti

Toti: Meu canal pessoal, onde posto clips artesanais de músicas que curto tocar, dicas de teoria musical, entre outras coisas.

Lofi Music Zone Beats

Lofi Music Zone Beats: O melhor da música Lofi para estudo, trabalho e relaxamento, criando o ambiente perfeito para sua concentração.

Backing Track / Play-Along

Backing Track / Play-Along: Acompanhe faixas instrumentais para prática musical, ideal para músicos que desejam aprimorar suas habilidades.

Código Fluente

Código Fluente: Aulas gratuitas de programação, devops, IA, entre outras coisas.

Putz!

Putz!: Canal da banda Putz!, uma banda virtual, criada durante a pandemia com mais 3 amigos, Fábio, Tatá e Lula.

Scarlett Finch

Scarlett Finch: Cantora e influenciadora criada com IA.

PIX para doações

PIX Nubank

PIX Nubank


☢️ Aula 45 – Tutorial Golang – Uso de Panic no Tratamento de Erros

Código da aula: Github

Introdução

Na aula anterior, exploramos conceitos avançados de ordenação em Go, utilizando funções de comparação personalizadas para ordenar dados complexos. Nesta aula, mudaremos o foco para um conceito fundamental no tratamento de erros em Go: o uso da função panic.

O panic em Go é utilizado para indicar que algo inesperado ocorreu, levando o programa a terminar sua execução imediatamente. Essa abordagem é usada em situações onde não é possível ou desejável tratar o erro de forma convencional.

Vamos explorar como e quando utilizar panic, com exemplos práticos aplicados no dia a dia de um desenvolvedor Go.

Exemplos Práticos

1. Abortando em Caso de Erro Irrecuperável

Uma das principais utilizações do panic é abortar a execução do programa em casos onde ocorra um erro que não é possível ou necessário tratar.

package main

import (
	"fmt"
	"os"
)

func main() {
	// Tenta criar o arquivo dentro do diretório ./temp que ainda não existe
	_, err := os.Create("./temp/file.txt")
	if err != nil {
		panic("Erro ao criar o arquivo ./temp/file.txt: " + err.Error())
	}

	fmt.Println("Arquivo criado com sucesso.")
}

Descrição:

  • panic("um problema inesperado aconteceu"): Dispara um panic com uma mensagem específica, encerrando o programa.
  • os.Create("/tmp/file"): Tenta criar um arquivo. Se houver algum erro, o panic(err) é disparado, exibindo o erro e terminando o programa.

2. Validando Pré-Condições com panic

Em alguns casos, você pode querer garantir que certas condições sejam verdadeiras antes de continuar a execução de uma função. Se essas condições não forem atendidas, um panic pode ser usado para interromper a execução.

package main

import "fmt"

func dividir(num, div float64) float64 {
    if div == 0 {
        panic("divisão por zero não permitida")
    }
    return num / div
}

func main() {
    fmt.Println("Resultado:", dividir(10, 2)) // Saída: Resultado: 5
    fmt.Println("Resultado:", dividir(10, 3)) // Saída: Resultado: 3.3333333333333335
    fmt.Println("Resultado:", dividir(10, 0)) // Isto irá disparar o panic
}

Descrição:

  • dividir: Uma função que realiza a divisão de dois números float64, mas dispara um panic se o divisor for zero.
  • panic("divisão por zero não permitida"): Dispara um panic com uma mensagem específica quando o divisor é zero, encerrando a execução da função e do programa.

3. Lidando com Recursos Críticos e Imprevistos

O panic também pode ser usado em situações onde um recurso crítico, como uma conexão com um banco de dados ou uma API, não pode ser obtido e é crucial para o funcionamento da aplicação.

Antes de rodar o código, execute:

go mod init panic-example

Inicializa um novo módulo Go chamado panic-example, criando um arquivo go.mod que gerencia as dependências e configurações do projeto.

Agora esse comando:

go mod tidy

O comando go mod tidy é usado para limpar e organizar as dependências no arquivo go.mod e no arquivo go.sum. Ele remove dependências que não são mais usadas no código e adiciona qualquer dependência que esteja faltando, garantindo que os arquivos de módulos reflitam exatamente as dependências necessárias para o projeto.

Se ainda estiver tendo problema com o import do drive no mysql, tente executar esse comando:

go get -u github.com/go-sql-driver/mysql

Baixa e adiciona a última versão do pacote mysql como dependência do projeto, registrando-a no go.mod para uso no código.

Agora pode executar o código.

package main

import (
    "database/sql"
    "fmt"
    _ "github.com/go-sql-driver/mysql"
)

func conectarBancoDeDados() *sql.DB {
    // Conexão com o MySQL
    connStr := "user:senha@/testdb?charset=utf8mb4&parseTime=True&loc=Local"
    db, err := sql.Open("mysql", connStr)
    if err != nil {
        panic("falha ao conectar no banco de dados: " + err.Error())
    }

    // Verifica se a conexão está ativa
    err = db.Ping()
    if err != nil {
        panic("não foi possível estabelecer uma conexão ativa: " + err.Error())
    }

    return db
}

func main() {
    db := conectarBancoDeDados()
    defer db.Close()

    fmt.Println("Conexão com o banco de dados estabelecida com sucesso.")
}

Descrição:

  • conectarBancoDeDados: Função que tenta estabelecer uma conexão com o banco de dados. Se a conexão falhar, um panic é disparado com uma mensagem de erro.
  • panic("falha ao conectar no banco de dados: " + err.Error()): Dispara um panic com uma mensagem específica se ocorrer um erro ao tentar conectar ao banco de dados.
  • defer db.Close(): Garante que a conexão com o banco de dados será fechada ao final da execução da função main, mesmo que ocorra um panic.

Conclusão

Nesta aula, vimos como utilizar o panic para lidar com situações de erro que não podem ou não devem ser tratadas de maneira convencional. Aprendemos a usar panic para abortar a execução em casos de erro irrecuperável, validar pré-condições em funções e lidar com recursos críticos. O uso adequado do panic contribui para a robustez e segurança de suas aplicações em Go.

Na próxima aula, exploraremos outro conceito fundamental em Go: o uso de defer, que permite adiar a execução de uma função até que a função que a contém termine.

Até a próxima aula!

Aula 44                                Aula 46

About The Author
-

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>