Comments (1)
Hm… https://github.com/pkg/errors/blob/master/stack.go#L113-L114
Yeah, it looks like we’re prefixing each frame output with a newline. This probably wasn’t noticed much, because the verbose formatting for errors themselves, was expecting this behavior and the output looked fine there, because it just doesn’t add a newline at the end of the error message, before dumping the stack frame.
More ideally, we probably only want newlines between frames, or after every frame. Both would then require the verbose formatting to inject a newline before getting to the frame output, but that’s pretty easy, and not really any sort of obstacle.
The arguments for “between each frame” vs “at the end of each frame” lies in how we consider the verbose output:
- between each frame: we are still formatting an error message and programs should expect errors to not end in punctuation, let alone a newline. That way they can be easily composed into log messages, etc. And this option would at least not change the output of verbose formatted errors from what they were before.
- at the end of each frame: But we are injecting newlines, so we’ve already broken proper expectations about what an error message should look like. (Yes, this has broken log ingest at my company before.) Since we are now effectively emitting a formatted text file, a proper text file should end in a newline.
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
- 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.