如何在没有堆栈跟踪的情况下创建新错误?

github.com/pkg/errors我通过调用创建一个错误:

err = errors.New(fmt.Sprintf(...))

默认情况下,它填充有堆栈跟踪。我想创建一个error但只有一条消息。

可能吗?


Cats萌萌
浏览 123回答 2
2回答

九州编程

您正在使用github.com/pkg/errors包,它做了一些巧妙的事情,比如添加堆栈跟踪。但这是一个外部包。标准库中的错误包不包括堆栈跟踪。您可以按如下方式使用它:import "errors"err := errors.New("my error message")或者使用格式化,使用fmt包:import "fmt"err := fmt.Errorf("I have %d bugs", 10)

摇曳的蔷薇

github.com/pkg/errors将始终存储您的错误堆栈跟踪信息,但您可以自由选择要显示的格式:err := errors.New("test")fmt.Printf("%v", err)  // show only messagefmt.Printf("%+v", err) // show message with full stack info这个库实现了fmt.Formatter接口以改变输出行为:func (f *fundamental) Format(s fmt.State, verb rune) {    switch verb {    case 'v':        if s.Flag('+') {            io.WriteString(s, f.msg)            f.stack.Format(s, verb)            return        }        fallthrough    case 's':        io.WriteString(s, f.msg)    case 'q':        fmt.Fprintf(s, "%q", f.msg)    }}这是整个源代码:https ://github.com/pkg/errors/blob/master/errors.go
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go