Comments (3)
Thank you for raising this issue. Would you mind confirming if it is a duplicate of an exisiting issue. Thank you.
from errors.
Ah I'm so sorry. I looked through open issues but not closed ones. I now see there's been discussion elsewhere here and multiple other places:
#228
#90
Considering this problem keeps being raised, is it worth adding code comments so that it's clear that the behaviour won't change + intention is that you just fork it yourself?
from errors.
I am not really sure what additional benefit would come from adding more code comments to the already well documented behavior. You clearly understood that this change could be a breaking change, and I think once people are aware of the behavior, they can also work out the implications of changing it.
I feel like there's just a use-case I'm missing here.
func f(data []byte, v interface{}) error {
return errors.Wrap(json.Unmarshal(data, v), "context to the possible error")
}
func g(data []byte) error {
_, err := w.Write(data)
return errors.Wrap(err, "context to the possible error")
}
Additionally, there is a semantics argument: any wrapping of a non-error should be a non-error, right? That is, it doesn’t really make sense to turn a non-error into an error. A wrapped error with no cause is… weird.
In particular, your given code example, even without errors.Wrap
was still buggy:
func someFunction(ctx context.Context) (*Page, error) {
// ... pretend there's more code here that created `nstmt` variable or anything else i've missed.
var pageList []Page
err := nstmt.SelectContext(ctx, &pageList, map[string]interface{}{
"id": request.ID,
})
if err != nil {
return nil, err
}
if len(pageList) == 0 {
// This is still a mistake, and one that I have seen in the wild from time to time.
return nil, err
}
}
from errors.
Related Issues (20)
- Proposal: add errors.Is and errors.As
- RFC: Allow custom StackTraces
- func Is() does not works with errors.Wrap or errors.Wrapf HOT 3
- Cause() behavior has changed HOT 11
- respect -trimpath build flag HOT 3
- Unwrap doesn't return the base error HOT 7
- Questions about extending annotations HOT 5
- undefined errors.Wrap HOT 2
- How to change format return wrapped error message HOT 2
- Stacktrace don't print all stack HOT 6
- errors.Wrap() created bugs in our codebase. HOT 3
- StackTrace.Format with "%+v" includes a leading newline HOT 1
- A new error caused by another error HOT 7
- Demo
- return *stack instead of stack HOT 2
- Wrap() duplicates call stack HOT 6
- Elegant way to check error is wrapped HOT 4
- `Errorf` should be able to wrap errors HOT 4
- Package errors looking for new maintainers HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from errors.