Documentation ¶
Overview ¶
Package errutil provides methods for working with errors
Index ¶
- func Chain(funcs ...func() error) error
- type Errors
- func (e *Errors) Add(errs ...any) *Errors
- func (e *Errors) All() []error
- func (e *Errors) Cap() int
- func (e *Errors) Error() string
- func (e *Errors) First() error
- func (e *Errors) Get(index int) error
- func (e *Errors) HasErrors() bool
- func (e *Errors) Last() error
- func (e *Errors) Num() int
- func (e *Errors) Reset()
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Chain ¶
Chain executes functions in chain and if one of them return error this function stop chain execution and return this error
Example ¶
f1 := func() error { return nil } f2 := func() error { return nil } f3 := func() error { return fmt.Errorf("Error 3") } f4 := func() error { return fmt.Errorf("Error 4") } err := Chain(f1, f2, f3, f4) fmt.Println(err.Error())
Output: Error 3
Types ¶
type Errors ¶
type Errors struct {
// contains filtered or unexported fields
}
Errors is struct for handling many errors at once
Example ¶
f1 := func() error { return nil } f2 := func() error { return nil } f3 := func() error { return fmt.Errorf("Error 3") } f4 := func() error { return fmt.Errorf("Error 4") } // An Errors needs no initialization var myErrs Errors myErrs.Add(f1()) // Using NewErrors you can create Errors instance with limited capacity errs := NewErrors(10) errs.Add(f1()) errs.Add(f2()) errs.Add(f3()) errs.Add(f4()) fmt.Printf("Last error text: %v\n", errs.Last().Error()) fmt.Printf("Number of errors: %d\n", errs.Num()) fmt.Printf("Capacity: %d\n", errs.Cap()) fmt.Printf("Has errors: %t\n", errs.HasErrors())
Output: Last error text: Error 4 Number of errors: 2 Capacity: 10 Has errors: true
func (*Errors) Add ¶
Add adds new error to slice
Example ¶
var myErrs Errors myErrs.Add(fmt.Errorf("Error 1")) myErrs.Add(fmt.Errorf("Error 2")) myErrs.Add(fmt.Errorf("Error 3")) fmt.Printf("First: %v\n", myErrs.First()) fmt.Printf("Last: %v\n", myErrs.Last())
Output: First: Error 1 Last: Error 3
func (*Errors) All ¶
All returns all errors in slice
Example ¶
var myErrs Errors myErrs.Add(fmt.Errorf("Error 1")) myErrs.Add(fmt.Errorf("Error 2")) myErrs.Add(fmt.Errorf("Error 3")) fmt.Printf("Errors: %v\n", myErrs.All())
Output: Errors: [Error 1 Error 2 Error 3]
func (*Errors) Cap ¶
Cap returns max capacity
Example ¶
myErrs := NewErrors(2) myErrs.Add(fmt.Errorf("Error 1")) myErrs.Add(fmt.Errorf("Error 2")) myErrs.Add(fmt.Errorf("Error 3")) fmt.Printf("Errors cap: %d\n", myErrs.Cap()) fmt.Printf("First: %v\n", myErrs.First()) fmt.Printf("Last: %v\n", myErrs.Last())
Output: Errors cap: 2 First: Error 2 Last: Error 3
func (*Errors) Error ¶
Error returns text of all errors
Example ¶
var myErrs Errors myErrs.Add(fmt.Errorf("Error 1")) myErrs.Add(fmt.Errorf("Error 2")) myErrs.Add(fmt.Errorf("Error 3")) fmt.Printf("Errors:\n%s\n", myErrs.Error())
Output: Errors: Error 1 Error 2 Error 3
func (*Errors) First ¶ added in v12.84.0
First returns the first error
Example ¶
var myErrs Errors myErrs.Add(fmt.Errorf("Error 1")) myErrs.Add(fmt.Errorf("Error 2")) myErrs.Add(fmt.Errorf("Error 3")) fmt.Printf("First: %v\n", myErrs.First())
Output: First: Error 1
func (*Errors) Get ¶ added in v12.84.0
Get returns error by it index
Example ¶
var myErrs Errors myErrs.Add(fmt.Errorf("Error 1")) myErrs.Add(fmt.Errorf("Error 2")) myErrs.Add(fmt.Errorf("Error 3")) fmt.Printf("Index 1: %v\n", myErrs.Get(1)) fmt.Printf("Index 99: %v\n", myErrs.Get(99))
Output: Index 1: Error 2 Index 99: <nil>
func (*Errors) HasErrors ¶
HasErrors checks if slice contains errors
Example ¶
var myErrs Errors fmt.Printf("Has errors: %t\n", myErrs.HasErrors()) myErrs.Add(fmt.Errorf("Error")) fmt.Printf("Has errors: %t\n", myErrs.HasErrors())
Output: Has errors: false Has errors: true
func (*Errors) Last ¶
Last returns the last error
Example ¶
var myErrs Errors myErrs.Add(fmt.Errorf("Error 1")) myErrs.Add(fmt.Errorf("Error 2")) myErrs.Add(fmt.Errorf("Error 3")) fmt.Printf("Last: %v\n", myErrs.Last())
Output: Last: Error 3
Click to show internal directories.
Click to hide internal directories.