functhrowError() (err error ){ //do something return errors.New("this is a new error") }
3、errors 包 1、errors源码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
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. funcNew(text string)error { return &errorString{text} } // errorString is a trivial implementation of error. type errorString struct { s string }
package errors_test import ( "fmt" "time") // MyError is an error implementation that includes a time and message. type MyError struct { When time.Time What string } func(e MyError) Error() string { return fmt.Sprintf("%v: %v", e.When, e.What) } funcoops()error { return MyError{ time.Date(1989, 3, 15, 22, 30, 0, 0, time.UTC), "the file system has gone away", }} funcExample() { if err := oops(); err != nil { fmt.Println(err) } // Output: 1989-03-15 22:30:00 +0000 UTC: the file system has gone away }