Yes, of course I'm quite familiar with Go 1.13's error capabilities.  
github.com/pkg/errors is still useful when one wants to attach stack traces 
to errors.

But this leaves my question open:  What are alternatives to wrapping 
errors? (Other than passing around errors with no semantic meaning, as was 
the case before wrapping was widespread)

On Thursday, December 23, 2021 at 8:51:20 PM UTC+1 Kevin Chowski wrote:

> Have you seen https://go.dev/blog/go1.13-errors?
>
> If one wants to use error unwrapping, these days generally it is suggested 
> to use the functionality from the standard package "errors" (or fmt.Errorf) 
> rather than some third-party package. That way everyone does it the same 
> way, making third-party packages more composable by default.
>
> I personally wrap errors with fmt.Errorf and the %w verb when I want to 
> add additional context to some error I received, and the root cause of why 
> my function failed is *precisely* the same as the 'error' value I received. 
> This is less often than I used to think, and it is definitely a maintenance 
> risk when this error comes from another package: if that package changes 
> what error type it returns, that may break some other part of my code. 
> (that risk is perhaps one reason why folks choose not to wrap errors by 
> default, though note that errors from Go's stdlib are less likely to change 
> over time than some random third-party library.)
>
> In general, I prefer to wrap errors that come from a package that I own 
> (again assuming the root cause is exactly the same AND I want to add some 
> annotation), and prefer not to wrap errors that come from a package owned 
> by someone else. But neither are hard rules for code I write or review.
>
> One last thought is: if you never unwrap an error, there are fewer good 
> reasons to ever wrap them. If you want to unwrap them, then it obviously 
> starts to make sense to wrap some :)
>
> On Thursday, December 23, 2021 at 5:59:22 AM UTC-7 fli...@flimzy.com 
> wrote:
>
>> I was recently catching up on the latest state of the 
>> github.com/pkg/errors package (https://github.com/pkg/errors/issues/245), 
>> when I noticed that Dave Cheney said:
>>
>> > I no longer use this package, in fact I no longer wrap errors.
>>
>> I'm curious what approach Dave uses now, but unless/until he writes on 
>> the topic, I'm also curious what other approaches people use for clean and 
>> cohesive error handling and reporting.
>>
>> If you don't wrap errors, how do you ensure meaningful error handling and 
>> reporting in your application?
>>
>> Thanks,
>> Jonathan
>
>

-- 
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 golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/a3afcdd9-3dd5-4bb6-84ef-8b05667519a0n%40googlegroups.com.

Reply via email to