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
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
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
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!

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