123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- // Copyright 2011 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 errors implements functions to manipulate errors.
- //
- // The New function creates errors whose only content is a text message.
- //
- // The Unwrap, Is and As functions work on errors that may wrap other errors.
- // An error wraps another error if its type has the method
- //
- // Unwrap() error
- //
- // If e.Unwrap() returns a non-nil error w, then we say that e wraps w.
- //
- // Unwrap unpacks wrapped errors. If its argument's type has an
- // Unwrap method, it calls the method once. Otherwise, it returns nil.
- //
- // A simple way to create wrapped errors is to call fmt.Errorf and apply the %w verb
- // to the error argument:
- //
- // errors.Unwrap(fmt.Errorf("... %w ...", ..., err, ...))
- //
- // returns err.
- //
- // Is unwraps its first argument sequentially looking for an error that matches the
- // second. It reports whether it finds a match. It should be used in preference to
- // simple equality checks:
- //
- // if errors.Is(err, fs.ErrExist)
- //
- // is preferable to
- //
- // if err == fs.ErrExist
- //
- // because the former will succeed if err wraps fs.ErrExist.
- //
- // As unwraps its first argument sequentially looking for an error that can be
- // assigned to its second argument, which must be a pointer. If it succeeds, it
- // performs the assignment and returns true. Otherwise, it returns false. The form
- //
- // var perr *fs.PathError
- // if errors.As(err, &perr) {
- // fmt.Println(perr.Path)
- // }
- //
- // is preferable to
- //
- // if perr, ok := err.(*fs.PathError); ok {
- // fmt.Println(perr.Path)
- // }
- //
- // because the former will succeed if err wraps an *fs.PathError.
- package errors
- // New returns an error that formats as the given text.
- // Each call to New returns a distinct error value even if the text is identical.
- func New(text string) error {
- return &errorString{text}
- }
- // errorString is a trivial implementation of error.
- type errorString struct {
- s string
- }
- func (e *errorString) Error() string {
- return e.s
- }
|