001: Error handling in Go
I talk about error handling in Go, why I think it's good but after a little bit of time getting used to have error as values.
- Wrapping error: fmt.Errorf("error trying to do X: %w", err)
- Package errors: https://pkg.go.dev/errors
Example of not using the happy path at 1st indentation:
try {
if (user.HasAccessTo(Admin) {
if (somethingElse()) {
// happy path
}
else {}
}
else {}
}
catch(Exception ex) {
// what really happened, and where?
}
An example of happy path in idiomatic Go:
ok, error := hasAccessTo(user, ADMIN)
if err != nil || !ok {
// handle not access
}
if !somethingElse() {
// handle something else false
}
// Happy path
// handle something else false
}
// Happy path
My course on building SaaS apps in Go.
Creators and Guests
Host
Dominic St-Pierre
Go system builder - entrepreneur. I've been writing software systems since 2001. I love SaaS, building since 2008.