Skip to content

Instantly share code, notes, and snippets.

@luizvnasc
Created March 6, 2020 15:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save luizvnasc/67306865aee95dadfc00e53d0d742481 to your computer and use it in GitHub Desktop.
Save luizvnasc/67306865aee95dadfc00e53d0d742481 to your computer and use it in GitHub Desktop.
Exemplo de error handling com go 1.13
package main
import (
"errors"
"fmt"
)
type DBError struct {
message string
err error
}
func (dbErr *DBError) Error() string {
return dbErr.message
}
func (dbErr *DBError) Wrap(e error) {
dbErr.err = e
}
func (dbErr *DBError) Unwrap() error {
return dbErr.err
}
type OtherError string
func (oErr OtherError) Error() string {
return string(oErr)
}
const (
ErrPermissionDenied = OtherError("permission denied")
ErrNotFound = OtherError("not found")
)
func DoSomething1() *DBError {
err := &DBError{message: "error doing something"}
err.Wrap(ErrPermissionDenied)
return err
}
func DoSomething2() *DBError {
err := &DBError{message: "error doing something"}
err.Wrap(ErrNotFound)
return err
}
func main() {
err := DoSomething1()
if errors.Is(err, ErrPermissionDenied) {
fmt.Println("permission error")
}
err = DoSomething2()
if errors.Is(err, ErrNotFound) {
fmt.Println("not found error")
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment