Skip to content

Latest commit

 

History

History
60 lines (45 loc) · 1.6 KB

File metadata and controls

60 lines (45 loc) · 1.6 KB

Errors With Stack for Go

This is an extremely simple, lightweight, drop-in replacement that shadows the go errors package. If this package is in scope when errors.New() is called, it will return a standard Go Error type with the error message payload including a stack trace.

Printing stack traces can be toggled at runtime by invoking errors.EnableStackTraces() and errors.DisableStackTraces() respectively. It is safe to call this from separate threads.

Usage

package main

import(
    "fmt"
    "github.com/playscale/errors-with-stack"
)

func exampleErrorsWithStack() {
    errorWithStack := errors.New("This error should contain a stack Trace")
    fmt.Println(errorWithStack.Error())

    errors.DisableStackTraces()

    plainOldGoError := errors.New("This is just a plain old golang error")
    fmt.Println(plainOldGoError.Error())
}

func main() {
    exampleErrorsWithStack()
}

When run, you should see:

$ go run main.go

This error should contain a stack Trace
Stack Trace:
goroutine 1 [running]:
runtime/debug.Stack(0x0, 0x0, 0x44)
        /go/src/runtime/debug/stack.go:24 +0xa4
github.com/playscale/errors-with-stack.New(0x4d4927, 0x27, 0xc0000c7f48, 0x4410de)
        /User/github.com/playscale/errors-with-stack/errorswithstack.go:22 +0x7b
main.exampleErrorsWithStack()
        /User/github.com/playscale/errors-with-stack/example/main.go:10 +0x41
main.main()
        /User/github.com/playscale/errors-with-stack/example/main.go:20 +0x27

This is just a plain old golang error

License

This package is released under an MIT license. See the LICENSE file included in this repo.