Create and manipulate errors

Creating and manipulating errors is a task that a Go developer does on a daily basis. Grace provides a list of common methods to initialize, transform and manipulate errors in a smart way.

New

New(...interface{})error

Create a new error starting from a variadic number of interfaces.

package main

import (
  "fmt"
  "github.com/oxequa/grace"
)

func main() {
  err := grace.New("new error")
  fmt.Println(err)
  // new error
  err = grace.New(10)
  fmt.Println(err)
  // 10
  err = grace.New("new error:",10)
  fmt.Println(err)
  // new error:10
  err = grace.New("test error:","value")
  fmt.Println(err.Error())
  // test error:value
}

Empty

Empty(error)bool

Check an error value. It returns true with a nil error or with an error value empty.

package main

import (
  "fmt"
  "errors"
  "github.com/oxequa/grace"
)

func main() {
  err := grace.New("new error")
  fmt.Println(grace.Empty(err))
  // false
  err = grace.New("")
  fmt.Println(grace.Empty(err))
  // true
  err = error(nil)
  fmt.Println(grace.Empty(err))
  // true
  err = errors.New("")
  fmt.Println(grace.Empty(err))
  // true
}

Equal

Equal(error,error) bool

Compare two errors. It returns true if the two errors content is equal.

package main

import (
  "fmt"
  "errors"
  "github.com/oxequa/grace"
)

func main() {
  err1 := grace.New("new error")
  err2 := grace.New("new error")
  fmt.Println(grace.Equal(err1,err2))
  // true
  err1 = grace.New("new error1")
  err2 = grace.New("new error2")
  fmt.Println(grace.Equal(err1,err2))
  // false
  err1 = errors.New("")
  err2 = errors.New("")
  fmt.Println(grace.Empty(err))
  // true
}

Def

Def(error,interface{})error

Set an error to a default value. It sets the error to default value if it is nil or empty.

package main

import (
  "fmt"
  "errors"
  "github.com/oxequa/grace"
)

func main() {
  err := grace.New("new error")
  fmt.Println(Def(err,"test"))
  // new error
  err := grace.New("")
  fmt.Println(Def(err,"test"))
  // test
  err1 = errors.New("")
  fmt.Println(Def(err,"test"))
  // test
}

Set

Set(error, interface{})error

Set an error to a custom value. It sets the error to the value if it isn’t nil or empty.

package main

import (
  "fmt"
  "errors"
  "github.com/oxequa/grace"
)

func main() {
  err := grace.New("new error")
  fmt.Println(Set(err,"test"))
  // test
  err := grace.New("err")
  fmt.Println(Def(err,"test"))
  // err
  err1 = errors.New("err")
  fmt.Println(Def(err,"test"))
  // err
}

Prefix

Prefix(error, ...interface{})error

Prefix an error value with a variadic number of interfaces.

package main

import (
  "fmt"
  "errors"
  "github.com/oxequa/grace"
)

func main() {
  err := grace.New("new error")
  fmt.Println(Prefix(err,"test:"))
  // test:new error
  err1 = errors.New("err")
  fmt.Println(Prefix(err,"test:"))
  // test:err
}