Error handling em Go: trate erro como valor no código
Como Go devolve erro no retorno e por que isso muda API e leitura de código. Padrões úteis além do panic para quem vem de exceção.
Resposta direta
Sobre error handling em go: Inesperada uma situação que não era para acontecer e a gente não recebe de volta o nosso valor do frete então a gente tem um erro nossa aplicação é nossa porque você vai acontecer o que vai quebrar vai cair vai parar a gente não pode deixar que.
O que o material diz sobre error handling em go
O episódio sobre error handling em go abre assim: Fala galera, meu nome é Lucas Carrelho, também conhecido como Dev Magro, e eu estou aqui mais uma vez a convite da Rocketseat, pessoal. E hoje eu vou falar sobre um tema bem interessante que é Error Handling em Go. Basicamente, o que acontece quando acontece um erro na nossa aplicação, como que a gente lida com isso, como que Go se comporta diante de outras aplicações.
Antes de a gente começar, pessoal, vamos tentar entender o que são erros. Vamos comigo aqui para o quadro Erro é um comportamento não esperado ou inesperado Vamos colocar agora em termos de programação A gente tem o nosso marketplace Vamos imaginar que a gente fez uma lojinha de roupa A gente vende roupa para o Brasil inteiro Roupa de time, camisa de time Eu gosto bastante de zé, inclusive estou até com camisa de time aqui também Enfim, eu vendo o Brasil inteiro E aí eu tenho uma integração na minha aplicação com a aplicação dos Correios Aplicação Correios Brasil E ela me devolve o quê? Eu passo o endereço para lá, eu mando o endereço, e ela me devolve o valor do frete.
Eu mando o endereço para o aplicativo do correio, um CEP ali, e ele me fala quanto ele cobra para fazer o envio. Inesperada uma situação que não era para acontecer e a gente não recebe de volta o nosso valor do frete então a gente tem um erro nossa aplicação é nossa porque você vai acontecer o que vai quebrar vai cair vai parar a gente não pode deixar que isso aconteça então a gente faz o erro renda ou tratamento de erro beleza e bom vamos comigo aqui eu deixei o vídeo me aqui o repositório o gol renda nem eu ok o código vai estar aqui no final não se preocupem e bom para gente para quem a segunda linguagem aqui geralmente vou é a segunda linguagem da Maria da Galera E eu dei uns exemplinhos, por exemplo, em Python, a gente usa try-except, em Java, try-catch, enfim, tem vários outros aqui só pesquisar. Basicamente, erro em Go, criar um erro customizado, por exemplo, basta você implementar o erro, assinar esse método na interface.
Para `error-handling-go-na-pratica`, preserve só o que muda uma decisão observável esta semana. Se o trecho for opinião, rotule como opinião — não fabrique métrica ausente do áudio.
Âncora
Use cenas e mecanismos da transcrição de «error handling em go»; não invente fatos.
Mecanismo e restrição em error handling em go
No miolo do material de error handling em go, o mecanismo fica explícito: E se você não sabe que a interface é em Go, dá uma olhada em umas aulinhas para trás aqui na Rocketseat, beleza? Qualquer tipo que a gente implemente erro, já permite com que a gente customize aquele erro. Imagina que você tem uma aplicação que a gente recebe de outra chamada, dois números, um dividendo e um divisor.
Dividendo, para quem não sabe, é o número que vai ser dividido, divisor é por qual número ele vai ser dividido. Nesse cenário aqui, nós temos o dividendo e o divisor, nós vamos retornar um inteiro, que vai ser o resultado dessa divisão. E aí, no retorno, nós vamos retornar um inteiro, que vai ser o resultado, no caso de sucesso, e um erro.
A gente não pode ter um divisor igual a zero, porque nenhum número divide por zero, ok? E esse retorno aqui seria o primeiro inteiro e um erro. E aí, a gente vai retornar zero, caso ele seja um erro, e a gente vai dar errors.new.
Para `error-handling-go-na-pratica`, preserve só o que muda uma decisão observável esta semana. Se o trecho for opinião, rotule como opinião — não fabrique métrica ausente do áudio.
Decisões práticas ligadas a error handling em go
As decisões práticas que aparecem quando o tema é error handling em go: Vamos colocar assim, o divisor não pode ser zero, para deixar bem claro o nosso erro. Galera, eu não vou dar muito detalhe sobre nil, mas basicamente é o valor nulo, ponteiro vazio, ok? O erro e eu não vou botar para que não sabe é isso aqui o dois pontos e o igualzinho é o mascote do gol é isso aí tá tem esperado isso aí o golfer né vamos chamar sua função dividir por dois números e números Vamos colocar primeiro o cenário feliz, que é 10 e 5.
A gente coloca um if er diferente de nil, a gente lança o nosso erro. Só que o erro não vai vir em nil, ele vai vir em errors.nil. Nós vamos colocar aqui, fmt.println, vamos colocar aqui, erro ao dividir.
Que ele vai pegar na pilha de erros o que foi lançado aqui atrás e agora vamos botar o cenário bonito né me ter ponto print lá em resultados do deserto vamos testar agora nossa função do homem. Gol e vocês podem ver que deu sucesso tá tá muito pequeno aqui galera vou tentar um pouquinho vocês podem ver fica Eita mas vocês viram que deu certo aqui tá é para não galera o verso de meu terminal é triste bom agora vamos alterar os dois números da nossa divisão bom Agora, a gente vai pegar e vai fazer a divisão por zero. Ou seja, nesse cenário aqui, é para a gente cair no nosso erro.
Para `error-handling-go-na-pratica`, preserve só o que muda uma decisão observável esta semana. Se o trecho for opinião, rotule como opinião — não fabrique métrica ausente do áudio.
Onde o fluxo de error handling em go quebra
Onde o fluxo costuma quebrar, segundo a fonte de error handling em go: Ele pegou aqui o erro e ele foi lá na pilha de erro. E por que é tão importante que a gente faça sempre o tratamento de erros? E vamos ver o que vai acontecer aqui galera olha só nesse cenário aqui nós tivemos o que nós chamamos de pênis em gol tá vendo o rotine um status integridade vai de base zero isso aqui é um erro é algo como é que eu posso dizer em gol quando a gente tem um pênis é o que interrompe a nossa execução do programa podemos dizer que é um pouco análogo ao que a gente chama de exception em outras Tá bom?
E é claro, tem como a gente fazer, por exemplo, implementação que a gente chama de recover, que é quando ele cai num panic, num cenário de panic, e ele se recuperar enquanto ele roda, ok? O foco da aula é que vocês têm que saber que existem panic, tá bom? Então, o gol, quando ele não reconhece aquele erro que está acontecendo, ele pode lançar um panic que quebra a execução do seu código, beleza?
Vamos falar um pouquinho agora de criar erros personalizados? E a gente vai ter uma mensagem do erro e a gente vai ter um código erro. Lembra que eu falei que qualquer um desses pode implementar a interface do erro?
Para `error-handling-go-na-pratica`, preserve só o que muda uma decisão observável esta semana. Se o trecho for opinião, rotule como opinião — não fabrique métrica ausente do áudio.
Atenção
Falsas vitórias em error handling em go: demo sem dado, integração sem observabilidade, narrativa sem evidência.
Como explicar error handling em go sem hype
Traduzindo o trecho de error handling em go para quem não viu o vídeo: Vai ficar basicamente, então, função e, a gente vai colocar o nosso error chamada aqui, error, e ele vai retornar um string, como o erro retorna, ok? Retornar, basicamente, fmt sprint f, vamos colocar aqui, error, e deixa eu ver eu posso fazer um de que o valor porcentagem essa bola esse tem daquele erro e. Pode muito tá certo então bom a gente vai fazer o que a gente vai criar uma estrutura que vai ter uma mensagem de erro e um código de erro ok pode só para gente simular tá bom a gente vai implementar interface erro.
Mensagem valor botar aqui diferente valor igual a zero a gente vai colocar também aqui um código né vou botar um código aqui pode botar 500 sei lá Erro interno. Bom, vamos fazer o teste para a gente entender como é que isso vai funcionar? Dessa forma, pessoal, a gente pode criar diversos erros personalizados em Go.
Erros de chamada, erros de comunicação, qualquer erro que a gente queira criar. Dessa forma, fica bem tranquilo de lidar com erros em Go. Pilha de erro, garantir que a gente faça determinado erro acontecendo, como, por exemplo, dá até para fazer uma coisa chamada type assertion para você ver se aquele erro é do tipo erro de chamada ou erro de comunicação.
Para `error-handling-go-na-pratica`, preserve só o que muda uma decisão observável esta semana. Se o trecho for opinião, rotule como opinião — não fabrique métrica ausente do áudio.
Checklist observável para error handling em go
Para fechar o ciclo de error handling em go com evidência do próprio material: E Go, por ele ter essa flexibilidade muito grande, permite com que a gente brinque com esse tipo de coisa. Bom, pessoal, essa é uma aulinha mais introdutória sobre erros em Go. Se inscreve no canal da RocketSeat, curte esse vídeo e compartilha com seu amiguinho que está começando em gol.
Fala galera, meu nome é Lucas Carrelho, também conhecido como Dev Magro, e eu estou aqui mais uma vez a convite da Rocketseat, pessoal. E hoje eu vou falar sobre um tema bem interessante que é Error Handling em Go. Basicamente, o que acontece quando acontece um erro na nossa aplicação, como que a gente lida com isso, como que Go se comporta diante de outras aplicações.
Antes de a gente começar, pessoal, vamos tentar entender o que são erros. Vamos comigo aqui para o quadro Erro é um comportamento não esperado ou inesperado Vamos colocar agora em termos de programação A gente tem o nosso marketplace Vamos imaginar que a gente fez uma lojinha de roupa A gente vende roupa para o Brasil inteiro Roupa de time, camisa de time Eu gosto bastante de zé, inclusive estou até com camisa de time aqui também Enfim, eu vendo o Brasil inteiro E aí eu tenho uma integração na minha aplicação com a aplicação dos Correios Aplicação Correios Brasil E ela me devolve o quê? Eu passo o endereço para lá, eu mando o endereço, e ela me devolve o valor do frete.
Para `error-handling-go-na-pratica`, preserve só o que muda uma decisão observável esta semana. Se o trecho for opinião, rotule como opinião — não fabrique métrica ausente do áudio.
Sinais de progresso em error handling em go
Mais um recorte útil sobre error handling em go antes de virar padrão do time: Eu mando o endereço para o aplicativo do correio, um CEP ali, e ele me fala quanto ele cobra para fazer o envio. Inesperada uma situação que não era para acontecer e a gente não recebe de volta o nosso valor do frete então a gente tem um erro nossa aplicação é nossa porque você vai acontecer o que vai quebrar vai cair vai parar a gente não pode deixar que isso aconteça então a gente faz o erro renda ou tratamento de erro beleza e bom vamos comigo aqui eu deixei o vídeo me aqui o repositório o gol renda nem eu ok o código vai estar aqui no final não se preocupem e bom para gente para quem a segunda linguagem aqui geralmente vou é a segunda linguagem da Maria da Galera E eu dei uns exemplinhos, por exemplo, em Python, a gente usa try-except, em Java, try-catch, enfim, tem vários outros aqui só pesquisar. Basicamente, erro em Go, criar um erro customizado, por exemplo, basta você implementar o erro, assinar esse método na interface.
E se você não sabe que a interface é em Go, dá uma olhada em umas aulinhas para trás aqui na Rocketseat, beleza? Qualquer tipo que a gente implemente erro, já permite com que a gente customize aquele erro. Imagina que você tem uma aplicação que a gente recebe de outra chamada, dois números, um dividendo e um divisor.
Dividendo, para quem não sabe, é o número que vai ser dividido, divisor é por qual número ele vai ser dividido. Nesse cenário aqui, nós temos o dividendo e o divisor, nós vamos retornar um inteiro, que vai ser o resultado dessa divisão. E aí, no retorno, nós vamos retornar um inteiro, que vai ser o resultado, no caso de sucesso, e um erro.
Para `error-handling-go-na-pratica`, preserve só o que muda uma decisão observável esta semana. Se o trecho for opinião, rotule como opinião — não fabrique métrica ausente do áudio.
Recortes adicionais da fonte sobre error handling em go
Estes trechos reforçam o raciocínio de `error-handling-go-na-pratica` sem resumo genérico:
Fala galera, meu nome é Lucas Carrelho, também conhecido como Dev Magro, e eu estou aqui mais uma vez a convite da Rocketseat, pessoal. E hoje eu vou falar sobre um tema bem interessante que é Error Handling em Go. Basicamente, o que acontece quando acontece um erro na nossa aplicação, como que a gente lida com isso, como que Go se comporta diante de outras aplicações.
Antes de a gente começar, pessoal, vamos tentar entender o que são erros. Vamos comigo aqui para o quadro Erro é um comportamento não esperado ou inesperado Vamos colocar agora em termos de programação A gente tem o nosso marketplace Vamos imaginar que a gente fez uma lojinha de roupa A gente vende roupa para o Brasil inteiro Roupa de time, camisa de time Eu gosto bastante de zé, inclusive estou até com camisa de time aqui também Enfim, eu vendo o Brasil inteiro E aí eu tenho uma integração na minha aplicação com a aplicação dos Correios Aplicação Correios Brasil E ela me devolve o quê? Eu passo o endereço para lá, eu mando o endereço, e ela me devolve o valor do frete.
Eu mando o endereço para o aplicativo do correio, um CEP ali, e ele me fala quanto ele cobra para fazer o envio. Inesperada uma situação que não era para acontecer e a gente não recebe de volta o nosso valor do frete então a gente tem um erro nossa aplicação é nossa porque você vai acontecer o que vai quebrar vai cair vai parar a gente não pode deixar que isso aconteça então a gente faz o erro renda ou tratamento de erro beleza e bom vamos comigo aqui eu deixei o vídeo me aqui o repositório o gol renda nem eu ok o código vai estar aqui no final não se preocupem e bom para gente para quem a segunda linguagem aqui geralmente vou é a segunda linguagem da Maria da Galera E eu dei uns exemplinhos, por exemplo, em Python, a gente usa try-except, em Java, try-catch, enfim, tem vários outros aqui só pesquisar. Basicamente, erro em Go, criar um erro customizado, por exemplo, basta você implementar o erro, assinar esse método na interface.
E se você não sabe que a interface é em Go, dá uma olhada em umas aulinhas para trás aqui na Rocketseat, beleza? Qualquer tipo que a gente implemente erro, já permite com que a gente customize aquele erro. Imagina que você tem uma aplicação que a gente recebe de outra chamada, dois números, um dividendo e um divisor.
Dividendo, para quem não sabe, é o número que vai ser dividido, divisor é por qual número ele vai ser dividido. Nesse cenário aqui, nós temos o dividendo e o divisor, nós vamos retornar um inteiro, que vai ser o resultado dessa divisão. E aí, no retorno, nós vamos retornar um inteiro, que vai ser o resultado, no caso de sucesso, e um erro.
A gente não pode ter um divisor igual a zero, porque nenhum número divide por zero, ok? E esse retorno aqui seria o primeiro inteiro e um erro. E aí, a gente vai retornar zero, caso ele seja um erro, e a gente vai dar errors.new.
Internalize com links reais do ecossistema CrazyStack: /blog, /curso-cursor-avancado-configuracoes-pro, /curso-claude-code-9-dicas-profissionais, /programa-crazystack e /checklist-independencia-cursor.