This looks like something I might have done. However, my preference would
be to write a wrapper MustGetParameter receives string field, calls
store.GetParameter(field), returns parameter or panics.
You may then use
defer func() { globalErr = recover()}
tenantID, err1 := MustGetParameter("TENANT_ID")
clientID, err2 := MustGetParameter("CLIENT_ID")
clientSecret, err3 := MustGetParameter("CLIENT_SECRET")
return connection{
tenantID,
clientID,
clientSecret,
}, globalErr
If an error can be handled, it should be handled, but if you are just
cascading the reports of errors, use defer recover as a try and let the
calling function handle it. Of course some panics really should be a panic
so you might want to have your defer func check the panic error to see if
it is expected or something that really is a panic.
When I do an API I may have a Doit and a MustDoit, one returns an error and
the other panics. My way of keeping the code clean unless I can actually do
something about the error.
On Wednesday, October 7, 2020 at 1:36:07 PM UTC-5 [email protected]
wrote:
> Hi, I'm looking for thoughts from some experienced go programmers on a
> technique to reduce error handling verbosity.
>
> The basic idea is to be optimistic over a few instructions, and then
> combine many errors in to one. This gist and explains the idea (note the
> absence of if err != nil {} )
>
> tenantID, err1 := store.GetParameter("TENANT_ID")
> clientID, err2 := store.GetParameter("CLIENT_ID")
> clientSecret, err3 := store.GetParameter("CLIENT_SECRET")
>
> globalErr := multierr.Combine(err1, err2, err3)
> return connection{
> tenantID,
> clientID,
> clientSecret,
> }, globalErr
>
> There's some more detail in a post
> http://martinsson-johan.blogspot.com/2020/10/less-error-handling-noice-in-go.html.
>
> I'm sure someone else has already proposed this, but I wasn't able to find
> it. Grateful for pointers
>
> While it seems sound to me I'm a very interested in what people from the
> community thinks.
>
> Cheers
> Johan Martinsson
>
>
--
You received this message because you are subscribed to the Google Groups
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/golang-nuts/73e712c2-948b-459f-8c07-6e201a8f6454n%40googlegroups.com.