Re:Gopher Wrangling. Effective error handling in Go
by Ajnasz on Thursday June 22, 2023 @08:47AM
(#36431312)
I guess it's the same in most of languages.
If you raise a general exception with a custom message you'll have to check the message not it's type.
Re:Gopher Wrangling. Effective error handling in Go
by throwaway894345 on Thursday June 22, 2023 @09:54PM
(#36441877)
That’s not the fault of fmt.Errorf(); if you aren’t giving people a type or a value to compare against there’s nothing the standard library can do to help you. You need to try string matching or maybe reflection. The standard library can’t fix bad code. Thankfully I don’t share your experience with people commonly returning those kinds of errors (at least not where one needs to match against an error).
The way code usually looks like is this:
or In either of these cases, a caller of foo() can at best parse err.String() to see why foo() complained. But there is no way that errors.As or errors.Is help with the majority of errors returned by Go programs.