Transcript for:
Como o Golang Trata Erros

o Olá pessoal tudo bem seja muito mas muito bem vindo a mais um vídeo aqui no nosso canal foi o saco meu nome é Wesley Willians e no vídeo de hoje nós vamos falar sobre um assunto bem delicado que se você é um programador Gol ou aspirante a programador Gol você vai ter que encarar Em algum momento que é como o gol trabalha com erros e é isso mesmo você vai perceber que o erro no gowland é um cidadão de primeira classe é um cara que tem uma expressividade muito grande que acaba na realidade mudando a forma como a gente programa no dia a dia então se você quer entender como tratar erros com Golem e como ser muito mais feliz e garantir que a sua aplicação cada vez mais vai ficar mais resiliente sem dúvidas Esse é o vídeo perfeito para você então bora lá que eu quero falar de erros com Golem E aí [Música] é bom pessoal e antes da gente ir diretamente ao assunto eu gostaria muito de pedir para você parar tudo agora e dá um like nesse vídeo dessa forma YouTube ele vai fazer o que ele vai distribuir esse vídeo para mais pessoas interessadas em aprender essa linguagem Além disso eu gostaria muito de pedir também para você a assinar aqui o nosso canal porque todas as vezes que a gente subiu novo vídeo você vai receber uma notificação tão Aproveita e ativar as notificações uma parada muito importante também aqui que você tem que se ligar é o seguinte o nosso temos aí uma playlist no canal sobre golang Então esse é um vídeo que vai estar embedado nessa para eles então dá uma olhada caso você queira pegar essa playlist logo do começo maravilha mas agora sem mais delongas vamos falar sobre erros no Golem Olá pessoal primeira coisa que você tem que entender é o seguinte quando a gente está trabalhando com linguagens de programação de forma geral normalmente nós temos aquele Famoso trickett Quem nunca trabalhou com trickett basicamente tudo com que a linguagem de programação tem o famoso trickett agora o grande ponto é que criou se vamos dizer uma cultura que a gente está tentando fazer um monte de coisa então aí se der eu não sei o que eu vou fazer então eu coloco tudo no blocão Fry e se der um teste eu dou um resultado genérico quem nunca fez isso é muito comum cada vez mais a gente fazer isso em diversos projetos eu assumo que eu já fiz isso inclusive escreve aí embaixo se você em algum momento já Fez sacanagem aí com frete agora o que que acontece o que que tem de diferente no gol quando a gente está trabalhando no final das contas com erros é que o erro ele sempre vai se tornar algo bem explícito no momento que você for trabalhar com a má uma das funções Como assim Wesley o gol ele permite que você retorne mais um valor para uma função e normalmente um desses valores vai ser o que no final das contas o nosso querido erro então se tiver algum erro ali a gente vai parar e tratar aquele pedacinho de código aquela função aquela execução e decidiu que a gente vai fazer Às vezes pode ser que a gente não vai fazer nada a gente vai anotar e foi mandar sair para um blog mas às vezes a gente pode mudar radicalmente como a gente vai trabalhar com o nosso sistema então é muito importante você vê que trabalhar com gol e principalmente da forma como o gol trata erros é algo bem granular então em algum momento você pode até se chatear e falar nossa mas eu tenho que ficar fazendo isso o tempo todo tem porque erro é algo muito importante para quem está trabalhando com gol e eu espero que você entenda o que eu tô querendo dizer então vamos colocar um pouquinho a mão no Esse é um pouco mais claro aqui para você vamos imaginar o seguinte pessoal vamos imaginar que eu tô querendo fazer uma consulta é para fazer um crawler em qualquer site ou qualquer coisa desse tipo do Google por exemplo então o que que eu vou fazer eu vou querer utilizar o meu método http pé tá uma é um pacote agaté ir no http eu tenho aqui a minha forma de eu fazer uma chamada Betty e aqui eu posso colocar um http://google.com.br legal e ele vai executar essa função porém se você olhar bem nessa função aqui você vai perceber que o resultado aqui dessa função é uma resposta com http response Oi e um erro Como assim Wesley vai retornar um erro para mim sim ele vai retornar um erro caso essa chamada Jet tenha algum erro então se tiver algum problema ele vai retornar o erro nessa variável e se não tiver eu nenhum essa variável erro vai vir em branco então isso para gente é bem interessante Então nesse caso é muito comum grande parte das funções que você for trabalhar com Golem seguir esse padrão resto de resposta e error tá normalmente é bem como você encontrar nesse padrão aqui RR tá é Eu particularmente eu não gosto muito mas o que que acontece eu me acostumei a comunidade trabalha desse jeito a maioria dos códigos você vai pegar desse jeito então a esse é o nosso erro e o que que vai acontecer quando nós executar mos essa nossa função se tiver um erro para a gente realizar essa alteração o erro vai ver aqui nessa variada tá então nós vamos fazer um teste aqui para gente como que eu consigo validar se deu algum erro ou não então vou fazer o seguinte eu vou colocar if error for different the new tá ou seja se tiver alguma coisa nessa minha variável erro então eu posso dar uma tão penic aqui eu vou colocar um pênis aqui nesse caso tá o pênis que basicamente ele vai abortar toda a minha chamada aqui da minha aplicação vai parar minha aplicação de forma geral ou eu posso dar um Lorde por exemplo tá posso dar um lado de fato Ou posso dar um ordem eu posso escolher a grande sacada galera é que você pode escolher o que você vai fazer com erro mas tudo isso acontece de forma bem granular legal então eu posso dar um erro fatal aqui para gente e eu vou escrever erro ao fazer comunicação Legal ou eu posso inclusive pegar o resultado e esse erro eu posso colocar e ver ponto que ele vai trazer aqui para mim tá e ele vai trazer o tipo de erro que ele acabou fazendo tá então eu tenho sempre essa opção que ele vai trazer um erro aqui para mim e agora o que que eu posso fazer eu posso seguir com a minha vida depois que eu tomei Qual decisão que eu vou fazer caso aconteça um erro nesse caso aqui eu posso pedir por exemplo para ele imprimir na tela o resultado do código HTML ou eu posso a re se eu posso pedir aqui que ele pode imprimir para mim sei lá U o header da minha requisição tá então eu posso fazer isso vamos executar Esse programa aqui para gente então eu vou dar um Gol hum Hello. GO e Prontinho e ele executou aqui para mim ele trouxe o header dessa solicitação e não deu nenhum erro aqui para mim agora eu vou colocar aqui Provavelmente algum cara que nem exista tá vamos ver o que que vai acontecer aqui com a gente eu vou colocar Google hello.com e ele tá demorando e aqui que aconteceu aqui ele fez um log aqui para gente tá nesse log Ele trouxe aqui olha esse rosto aqui eu não consegui contato não existe esse rosto Então nesse nosso caso aqui nós conseguimos parar o nosso programa aqui e a gente conseguiu trazer esse resultado então perceba galera você vai se cansar de ver esse tipo de expressão para tudo quanto é lugar no seu código Google Pode parecer repetitivo pode parecer estranho nutricat mas você vai perceber que para tudo que você for fazer você pode sempre verificar se tem um erro Wesley Mas como que eu posso fazer a minha própria função que de algum erro a gente pode resolver isso sim vamos fazer um teste um exemplo aqui mais claro aqui para mim tá eu vou fazer o seguinte eu vou criar uma função de soma tá onde eu entro com o número X é inteiro o y tempero e ele vai retornar para mim o que inteiro tá e ele vai retornar para mim também um erro é basicamente é isso que eu tô fazendo aqui para ele então o que que eu vou fazer vamos imaginar que se o valor for maior que 10 a gente vai dar um erro senão a gente vai retornar o valor correto aqui para o cara então o que que eu vou fazer eu vou fazer um if Tá eu vou pegar aqui só para colocar aqui resultado: igual a x mais Y legal fazer passo a passo if ver se for maior que 10 o que que eu vou fazer aqui para ele eu vou fazer o seguinte eu vou retornar aqui para ele o Muriqui também é zero por exemplo tá porque não interessa mas o valor é importante aqui que nesse caso eu vou trabalhar com erro e aqui eu posso colocar a seguinte ó e roxo. New e eu posso colocar a Total maior que 10 legal e agora o que que eu vou fazer eu vou retornar o valor final então voltar retornar o rei se mas o meu erro agora aqui é vazio porque eu não quero trazer nada para o erro porque não deu problema a minha aplicação tá então é basicamente isso que eu quero fazer então vamos chamar aqui a nossa querida função aqui para mim então eu vou pegar aqui resultado e erro: igual à soma tá onde eu vou colocar 10 mais 10 que provavelmente O valor vai dar de frente eu vou colocar if error for different the new o que que eu vou fazer eu vou dar um blog fa e por exemplo eu vou passar aqui o valor do erro que que retornou aqui para mim como erro no final das contas Caso contrário eu posso colocar um Elsa eu posso escolher qualquer coisa nesse caso ele vai matar mesmo mas eu posso colocar aqui FM ter ponto a print l n e eu posso colocar aqui o resultado verso para mim pegar então vamos botar esse camarada para rodar o e Prontinho se você percebeu ele saiu e falou aqui que o meu total é maior que 10 tá então é muito importante isso você se ligar ele parou aqui no meu erro e caso ele não quer a parar né Vamos colocar aqui um set com 2 Oi aqui para mim não vou rodar o botão nove porque o meu erro veio vazio Então esse tipo de construção vai ser a coisa mais comum do mundo para você trabalhar com Golem então fica ligado porque se você isso acha isso chato tá o gol leng não é uma linguagem para você ou você se acostuma ou você troca de linguagem é muito comum no comércio assumo que para mim era meio estranho mas agora eu olho com erro o olho para o erro de uma outra forma eu olho para o erro de uma forma assim muito mais caprichada eu consigo pensar muito mais no programa que eu estou desenvolvendo Wesley eu tô de saco cheio dessa história de erro eu não quero mais ouvir falar eu não quero tratar o erro tem como eu dar um by pass nisso tem Tá o que que acontece o gol ele tem algo que a gente chama de Branca identifier basicamente é uma variável que joga o dado fora para você não utilizar porque você não pode deixar de receber dados no Google então o que que você pode e ao invés de trabalhar dessa forma você vai fazer o seguinte você vai colocar o underline aqui vai jogar o erro para fora e acabou você não está tratando o erro o valor do erro tá vindo para cá e esse dado que vai ser jogado fora basicamente é isso vai funcionar a sua aplicação tá e provavelmente eu vou ter que viver com um efeito colateral né então como tem algum problema em relação a essa regra de maior que 10 ele vai retornar 0 e eu vou falar nossa porque que retornou 0 Wesley não faz sentido bom se você tivesse tratado erro você saberia o motivo então tá aqui galera uma dica de como que você pode trabalhar e tratar erros com gol e agora eu acho que vai ficar mais fácil para você tomar suas decisões e saber que se você tá trabalhando com o gol lembre-se erro é algo que você deve sempre levar em conta um grande abraço para você eu gostaria novamente dá um joinha aqui ah e também não esquece de se inscrever aí no nosso canal um grande abraço e até o nosso próximo vídeo Tchau aí não é [Música]