Source File
wrap.go
Belonging Package
github.com/go-faster/errors
// Copyright 2018 The Go Authors. All rights reserved.// Use of this source code is governed by a BSD-style// license that can be found in the LICENSE file.package errorsimport ()// A Wrapper provides context around another error.type Wrapper interface {// Unwrap returns the next error in the error chain.// If there is no next error, Unwrap returns nil.Unwrap() error}// Opaque returns an error with the same error formatting as err// but that does not match err and cannot be unwrapped.func ( error) error {return noWrapper{}}type noWrapper struct {error}func ( noWrapper) ( Printer) ( error) {if , := .error.(Formatter); {return .FormatError()}.Print(.error)return nil}// Unwrap returns the result of calling the Unwrap method on err, if err's// type contains an Unwrap method returning error.// Otherwise, Unwrap returns nil.func ( error) error {return errors.Unwrap()}// Cause returns first recorded Frame.func ( error) ( Frame, bool) {for {, := .(*wrapError)if ! {return ,}= .frame= ||= .err}}type wrapError struct {msg stringerr errorframe Frame}func ( *wrapError) () string {return fmt.Sprint()}func ( *wrapError) ( fmt.State, rune) { FormatError(, , ) }func ( *wrapError) ( Printer) ( error) {.Print(.msg).frame.Format()return .err}func ( *wrapError) () error {return .err}// Wrap error with message and caller.func ( error, string) error {:= Frame{}if Trace() {= Caller(1)}return &wrapError{msg: , err: , frame: }}// Wrapf wraps error with formatted message and caller.func ( error, string, ...interface{}) error {:= Frame{}if Trace() {= Caller(1)}:= fmt.Sprintf(, ...)return &wrapError{msg: , err: , frame: }}// Is reports whether any error in err's chain matches target.//// The chain consists of err itself followed by the sequence of errors obtained by// repeatedly calling Unwrap.//// An error is considered to match a target if it is equal to that target or if// it implements a method Is(error) bool such that Is(target) returns true.//// An error type might provide an Is method so it can be treated as equivalent// to an existing error. For example, if MyError defines//// func (m MyError) Is(target error) bool { return target == fs.ErrExist }//// then Is(MyError{}, fs.ErrExist) returns true. See syscall.Errno.Is for// an example in the standard library.func (, error) bool {return errors.Is(, )}// As finds the first error in err's chain that matches target, and if so, sets// target to that error value and returns true. Otherwise, it returns false.//// The chain consists of err itself followed by the sequence of errors obtained by// repeatedly calling Unwrap.//// An error matches target if the error's concrete value is assignable to the value// pointed to by target, or if the error has a method As(interface{}) bool such that// As(target) returns true. In the latter case, the As method is responsible for// setting target.//// An error type might provide an As method so it can be treated as if it were a// different error type.//// As panics if target is not a non-nil pointer to either a type that implements// error, or to any interface type.func ( error, interface{}) bool { return errors.As(, ) }
![]() |
The pages are generated with Golds v0.6.7. (GOOS=linux GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @Go100and1 (reachable from the left QR code) to get the latest news of Golds. |