eris
bugsnag
Our great sponsors
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
eris
-
Will go ever get C/Java style exceptions?
What really sucks IMO is that there's no compiler support for exhaustive error checks, the amount of boilerplate for handling errors, no sum types like Rust, horrible stacktraces unless you use something like eris, the ease with which you can ignore errors, all make for really poor error handling as it remains. It is now the #1 challenge that devs report for Go as per their own survey. We might see some improvements on this front at some point and seeing the new errors.Join stuff is giving me hope
-
Thirteen Years of Go - The Go Programming Language
Attaching stacktraces to errors is one way to make errors more readable. Go has notoriously unreadable errors and when you log the error, the logging function is now at the top of the stack rather than where the error actually originated. There needs to be a simple function that adds some default wrapping when you return an error because as it is, you need packages like Eris to make the errors even halfway readable
-
Zap logging package
Actually just stumbled over eris which seems decent.
bugsnag
-
Explanation of context in go?
If I may be so bold to plug my own work. This package uses context's value storage feature quite a bit (see context.go) to offer APIs that can add custom data for diagnostics and observability purposes. The values stored in the context are used not for application logic, but to potentially attach to an error report. Particularly useful in middleware handlers.
What are some alternatives?
tracerr - Golang errors with stack trace and source fragments.
errors - A drop-in replacement for Go errors, with some added sugar! Unwrap user-friendly messages, HTTP status code, easy wrapping with multiple error types.
emperror - The Emperor takes care of all errors personally
go-ez - An experimental Go package that allows you to write less error handling and makes the logic look simpler and clearer.
errlog - Reduce debugging time. Use static & stack-trace analysis to identify the error immediately.
watcher - watcher is a Go package for watching for files or directory changes without using filesystem events.
🎚Shift - 🎚Shift is an optioned circuit breaker implementation
Falcon - A Simple Yet Highly Powerful Package For Error Handling
pears-go - harvest Go errors with ease
yubikey-touch-detector - A tool to detect when your YubiKey is waiting for a touch (to send notification or display a visual indicator on the screen)