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
}