SlideShare uma empresa Scribd logo
Golang
pkg Errors Tratamento de erros
em Go eficaz e com
pouco código
DISCLAIMER
Erros!Faz parte de qualquer solução de
software confiável realizar verificações
de erros durante seus processo e criar
um caminho alternativo para que o
fluxo do programa não seja
interrompido.
LET’S GO!
AGENDA
Simples para o
Simples
A velha e boa
verificação de erro
em Go (ou tudo
que tínhamos)
Package
errors
Solução nativa da
biblioteca padrão para
soluções mais
robustas
Soluções mais
robustas
Quando é preciso
fazer uma
verificação de erros
mais eficaz
Interfaces e
Sentinelas
Reconstruir a roda
(antes da versão 1.13)
Simples
para o
simples
A velha e boa verificação de erro
em Go (ou tudo que tínhamos)
— Dave Cheney
“How does Go get
exceptions right? Why, by
not having them in the first
place.”
“Como o Go trata as exceções? Em
primeiro lugar não tendo exceções.
https://dave.cheney.net/2012/01/18/why-go-gets-exceptions-right
https://blog.golang.org/defer-panic-and-recover
https://play.golang.org/p/9-2vCvRuhmE
https://github.com/masisiliani/act-error
https://github.com/masisiliani/act-error
https://github.com/masisiliani/act-error
https://github.com/masisiliani/act-error
Soluções mais
Robustas
Quando é preciso fazer uma
verificação de erros mais eficaz
Golang e o pacote de erros (pkg errors)
Golang e o pacote de erros (pkg errors)
Golang e o pacote de erros (pkg errors)
Golang e o pacote de erros (pkg errors)
Golang e o pacote de erros (pkg errors)
Golang e o pacote de erros (pkg errors)
Golang e o pacote de erros (pkg errors)
Golang e o pacote de erros (pkg errors)
https://dave.cheney.net/2016/04/27/dont-just-check-errors-handle-them-gracefully
Interfaces e
Sentinelas
Reconstruir a roda
(antes da versão 1.13)
Sentinels
Error
Types
https://golang.org/pkg/io/
https://github.com/masisiliani/act-error
CONTEXTO
Por possuir uma
declaração simples
do erro, não permite
personalizar em
tempo de execução
ACOPLAMENTO
Pacotes distintos
consumindo o
mesmo pacote de
de errors sentinelas
ERROS
PÚBLICOS
Se a sua função for
pública, seu erro
também vai ter que
ser.
Consequentemente
aumenta sua
documentação.
Sentinels
https://github.com/masisiliani/act-error
Golang e o pacote de erros (pkg errors)
https://github.com/masisiliani/act-error
ASSERTION
Para fazer a
verificação do erro
precisávamos apelar
para o asserção de
valores
ACOPLAMENTO
Pacotes distintos
consumindo o
mesmo pacote de
de errors sentinelas
ERROS
PÚBLICOS
Se a sua função for
pública, seu erro
também vai ter que
ser.
Consequentemente
aumenta sua
documentação.
Error
Types
Golang e o pacote de erros (pkg errors)
Package
errors
Solução nativa da biblioteca
padrão para soluções mais
robustas
https://github.com/masisiliani/act-error
https://github.com/masisiliani/act-error
https://github.com/masisiliani/act-error
https://github.com/masisiliani/act-error
REFERÊNCIAS
[Working with Errors in Go 1.13]
[Golang Error Handling — Best Practice in 2020]
[Golang: How to handle Errors in v1.13]
[Error Handling in Go 1.13]
[Error Handling in Go]
[Working with Errors in Go 1.13]
Livro A Linguagem de Programação Go
7.08 Interface Error pg.264
7.10 Asserção de Tipo pg.275
THANKS!
Do you have any questions?
http://twitter.com/masisiliani
https://www.linkedin.com/in/masisiliani/
https://medium.com/@masisiliani
https://github.com/masisiliani
Vagas: https://grnh.se/25bec1202
https://forms.gle/ete8qkc4djcxh5Mi6
FEEDBACK!

Mais conteúdo relacionado

PPTX
WTM - Entrega Contínua
PPTX
Importância de Testes Automatizados para Continuous Delivery & DevOps
PDF
Mtc docker - utilizando no seu dia a dia
PPTX
[Uff] Continuous Delivery: Entrega Contínua de Software de Valor
PPTX
POG - Definição e Conceitos
PDF
MTC - Automatizando Visual Regression Testing
PDF
Tester, pegue suas coisas, você está demitido
PPTX
Visual Regression Tests - Dando um Upload nos seus testes de UI!
WTM - Entrega Contínua
Importância de Testes Automatizados para Continuous Delivery & DevOps
Mtc docker - utilizando no seu dia a dia
[Uff] Continuous Delivery: Entrega Contínua de Software de Valor
POG - Definição e Conceitos
MTC - Automatizando Visual Regression Testing
Tester, pegue suas coisas, você está demitido
Visual Regression Tests - Dando um Upload nos seus testes de UI!

Mais procurados (20)

PDF
Testes com TestLink e Selenium
PPTX
[Agile Brazil] Entrega Contínua na Infoglobo: gerando valor em 2 horas
PDF
Levando seu SCM à outro nível com Feature Flags
PPTX
Continuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a Serviços
PPTX
Continuous Delivery - versão estendida :)
PPTX
Existe Vida além do FTP!
PDF
TDC2017 | São Paulo - Trilha Android How we figured out we had a SRE team at ...
PDF
3 noções básicas para automação de testes efetivos - Taíse Dias da Silva
PDF
PDF
Automação de Teste em Front End - Caipira Ágil
PDF
Visual Regression Testing: mais um tipo de teste pra sua pipeline
PDF
TOTVS - Agile Testing e a Importância de se ter Estratégia de Testes
PPTX
CNQS - Testes Automatizados & Continuous Delivery
PDF
Automação de Teste com Robotium - Tche Mobile 2014
PPTX
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
PPTX
Palestra TDD - TDC - 2016
PPTX
[DevOps Carioca] Testes Automatizados
PPTX
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...
PPTX
[DevOps Carioca] Continuous Delivery
PPTX
Alcançando qualidade de software através de entrega contínua
Testes com TestLink e Selenium
[Agile Brazil] Entrega Contínua na Infoglobo: gerando valor em 2 horas
Levando seu SCM à outro nível com Feature Flags
Continuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a Serviços
Continuous Delivery - versão estendida :)
Existe Vida além do FTP!
TDC2017 | São Paulo - Trilha Android How we figured out we had a SRE team at ...
3 noções básicas para automação de testes efetivos - Taíse Dias da Silva
Automação de Teste em Front End - Caipira Ágil
Visual Regression Testing: mais um tipo de teste pra sua pipeline
TOTVS - Agile Testing e a Importância de se ter Estratégia de Testes
CNQS - Testes Automatizados & Continuous Delivery
Automação de Teste com Robotium - Tche Mobile 2014
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Palestra TDD - TDC - 2016
[DevOps Carioca] Testes Automatizados
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...
[DevOps Carioca] Continuous Delivery
Alcançando qualidade de software através de entrega contínua
Anúncio

Último (6)

PDF
apresentacao introducao computacao ead.pdf
DOC
CODIGO PARA AUTOMATIZAR A JOGABILIDADE SUPER MARIO
PPTX
Curso de Windows 11 resumido na prática.pptx
PDF
Dos requisitos ao código: como criar código rastreável em PHP
PDF
Evolução em código: algoritmos genéticos com PHP
DOC
COMO AUTOMATIZR JOGOS SUPER NINTENDO ATRAVES DA PROGRAMAÇÃO
apresentacao introducao computacao ead.pdf
CODIGO PARA AUTOMATIZAR A JOGABILIDADE SUPER MARIO
Curso de Windows 11 resumido na prática.pptx
Dos requisitos ao código: como criar código rastreável em PHP
Evolução em código: algoritmos genéticos com PHP
COMO AUTOMATIZR JOGOS SUPER NINTENDO ATRAVES DA PROGRAMAÇÃO
Anúncio

Golang e o pacote de erros (pkg errors)

Notas do Editor

  • #8: É importante entender que para o Go, excessões são tão excessões que nem devem ser consideradas parte da estrutura da linguagem. E por isso, temos uma palavra reservada na linguagem para tratar exessões de verdade. Que é panic.
  • #10: Ao executar esse código vamos ver a mensagem de erro passada para a função New() no terminal.
  • #15: Projeto simples, que se chama Minha Agenda. Nesse projeto eu tenho o seguinte objetivo: Guardar meus contatos com um número de telefone.
  • #26: Sentinelas é um tipo de erro pré declarado