Comments (5)
You can write errors.Pop
yourself
if err, ok := err.(interface{Cause() error}); ok {
cause := err.Cause()
///
}
from errors.
Thank you for this suggestion. I understand what you want to implement, but I do not understand why. Can you show me how a caller of Pop
would use the result?
from errors.
Hi!
I'm also agree with @bobbytables.
In my case a Pop()
function is useful to isolate my library errors form others library.
Sometimes I wrap errors inside my function (which returns error), other times no.
var (
ErrNetwork = errors.New("network erorr")
ErrDB = errors.New("database erorr")
)
func main() {
err := funcWithError()
switch errors.Pop(err) {
case ErrNetwork:
// do stuff
case ErrDB:
// do stuff
default:
// do other stuff
}
...
}
from errors.
@tux-eithel thanks for your comment. I don't think your sample code works because the errors returned from this package cannot be compared for equality. This is by design.
from errors.
@davecheney My example it too much simplified. The Pop()
may returns an errors
and the switch
could be done on after call Error()
function.
var (
ErrNetwork = errors.New("network erorr")
ErrDB = errors.New("database erorr")
)
func main() {
err := funcWithError()
pop := errors.Pop(err)
switch pop.Error() {
case ErrNetwork:
// do stuff
case ErrDB:
// do stuff
default:
// some error from other libraries
}
...
}
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
- Change Wrap() to return an error even if we provide nil HOT 3
- 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.