errutil

package
v12.90.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 26, 2023 License: Apache-2.0 Imports: 1 Imported by: 1

Documentation

Overview

Package errutil provides methods for working with errors

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func Chain

func Chain(funcs ...func() error) error

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 NewErrors

func NewErrors(capacity ...int) *Errors

NewErrors creates new struct

func (*Errors) Add

func (e *Errors) Add(errs ...any) *Errors

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

func (e *Errors) All() []error

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

func (e *Errors) Cap() int

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

func (e *Errors) Error() string

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

func (e *Errors) First() error

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

func (e *Errors) Get(index int) error

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

func (e *Errors) HasErrors() bool

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

func (e *Errors) Last() error

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

func (*Errors) Num

func (e *Errors) Num() int

Num returns number of 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 num: %d\n", myErrs.Num())
Output:

Errors num: 3

func (*Errors) Reset

func (e *Errors) Reset()

Reset resets Errors instance to be empty

Example
var myErrs Errors

myErrs.Add(fmt.Errorf("Error"))
myErrs.Reset()

fmt.Printf("Has errors: %t\n", myErrs.HasErrors())
Output:

Has errors: false

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL