Documentation ¶
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Join ¶ added in v0.0.2
Join one or more errors together into a single error. The resulting value is a multiError containing all non-nil errors provided. If the first error is a multiError, the rest of the errors will be appended to the existing multiError. If the first error is not a multiError, a new multiError will be created for it and all the rest of the errors as well.
Example ¶
err1 := errors.New("something bad happened") err2 := errors.New("something is broken") err := multierror.Join(err1, err2) fmt.Println(err)
Output: Found 2 errors: something bad happened something is broken
Example (BinaryMarshaler) ¶
err1 := errors.New("something bad happened") err2 := errors.New("something is broken") marshaler, ok := multierror.Join(err1, err2).(encoding.BinaryMarshaler) if !ok { fmt.Println("Not an encoding.TextMarshaler") return } b, err := marshaler.MarshalBinary() if err != nil { fmt.Printf("Error encoding text: %s\n", err) return } b, err = json.Marshal(b) if err != nil { fmt.Println(err) return } fmt.Println(string(b))
Output: "Cv+BBQEC/4QAAABF/4IAQUAMAD1Gb3VuZCAyIGVycm9yczoKCXNvbWV0aGluZyBiYWQgaGFwcGVuZWQKCXNvbWV0aGluZyBpcyBicm9rZW4K"
Example (ErrorsAs) ¶
_, err := os.Open("non-existing") if err == nil { fmt.Println("No error") } err = multierror.Join(err, errSentinelOne) var pathError *fs.PathError fmt.Println(errors.As(err, &pathError))
Output: true
Example (ErrorsIs) ¶
err1 := errors.New("something bad happened") err2 := errors.New("something is broken") err3 := errors.New("something is REALLY broken") err := multierror.Join(err1, err2) err = multierror.Join(err, err3) fmt.Println(errors.Is(err, err1))
Output: true
Example (FmtDefault) ¶
err1 := errors.New("something bad happened") err2 := errors.New("something is broken") err := multierror.Join(err1, err2) fmt.Printf("%v", err)
Output: Found 2 errors: something bad happened something is broken
Example (FmtGoSyntaxRepresentation) ¶
err1 := errors.New("something bad happened") err2 := errors.New("something is broken") err := multierror.Join(err1, err2) fmt.Printf("%#v", err)
Output: [2]error{"something bad happened","something is broken"}
Example (GobEncode) ¶
err1 := errors.New("something bad happened") err2 := errors.New("something is broken") var builder strings.Builder if err := gob.NewEncoder(&builder).Encode(multierror.Join(err1, err2)); err != nil { fmt.Println(err) return } b, err := json.Marshal(builder.String()) if err != nil { fmt.Println(err) return } fmt.Println(string(b))
Output: "\n\ufffd\ufffd\u0005\u0001\u0002\ufffd\ufffd\u0000\u0000\u0000E\ufffd\ufffd\u0000A@\u000c\u0000=Found 2 errors:\n\tsomething bad happened\n\tsomething is broken\n"
Example (JsonMarshal) ¶
err1 := errors.New("something bad happened") err2 := errors.New("something is broken") b, err := json.Marshal(multierror.Join(err1, err2)) if err != nil { fmt.Println(err) return } fmt.Println(string(b))
Output: "something bad happened, something is broken"
Example (Nested) ¶
err1 := errors.New("something bad happened") err2 := errors.New("something is broken") err3 := errors.New("something is REALLY broken") err := multierror.Join(err1, err2) err = multierror.Join(err, err3) fmt.Println(err)
Output: Found 3 errors: something bad happened something is broken something is REALLY broken
Example (Nil) ¶
err := multierror.Join(nil, nil, nil) fmt.Println(err)
Output: <nil>
Example (TextMarshaler) ¶
err1 := errors.New("something bad happened") err2 := errors.New("something is broken") marshaler, ok := multierror.Join(err1, err2).(encoding.TextMarshaler) if !ok { fmt.Println("Not an encoding.TextMarshaler") return } b, err := marshaler.MarshalText() if err != nil { fmt.Printf("Error encoding text: %s\n", err) return } fmt.Println(string(b))
Output: Found 2 errors: something bad happened something is broken
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.