22
33[ ![ Go Doc] ( _icons/godoc.svg )] ( https://pkg.go.dev/github.com/FishGoddess/errors )
44[ ![ License] ( _icons/license.svg )] ( https://opensource.org/licenses/MIT )
5- [ ![ License ] ( _icons/coverage.svg )] ( _icons/coverage.svg )
5+ [ ![ Coverage ] ( _icons/coverage.svg )] ( _icons/coverage.svg )
66![ Test] ( https://github.com/FishGoddess/errors/actions/workflows/test.yml/badge.svg )
77
88** Errors** is a lib for handling error gracefully in Go.
@@ -25,50 +25,27 @@ import (
2525 " github.com/FishGoddess/errors"
2626)
2727
28- const (
29- codeTestError = 10000 // Your error's code
30- )
28+ func main () {
29+ // Use wrap function to create an *Error error which has code and message.
30+ err := errors.Wrap (1000 , " need login" )
31+ fmt.Println (err)
3132
32- // TestError returns a test error.
33- func TestError (err error ) error {
34- return errors.Wrap (err, codeTestError)
35- }
33+ // You can get code and message of err anytime.
34+ fmt.Println (err.Code (), err.Message ())
3635
37- // IsTestError if err is test error.
38- func IsTestError ( err error ) bool {
39- return errors.Is (err, codeTestError )
40- }
36+ // Try these ways to get code and message!
37+ // You will get default code or message if err doesn't have a code or message.
38+ fmt. Println (errors. Code (err, 6699 ), errors.Message (err, " default message " ) )
39+ fmt. Println (errors. Code (io. EOF , 6699 ), errors. Message (io. EOF , " default message " ))
4140
42- func main () {
43- // We provide three graceful ways to handle error in Go: Wrap() and Unwrap() and Is().
44- // Wrap wraps error with a code and Unwrap returns one error with this code.
45- // Is returns one error is with the same code or not.
46- // As you can see, we define two functions above, and this is the basic way to use this lib.
47- err := TestError (errors.New (" something wrong" ))
48- if IsTestError (err) {
49- fmt.Println (" I got a test error" )
50- }
51-
52- // Also, we provide some basic errors for you:
53- err = errors.BadRequest (nil ) // Classic enough! Ah :)
54- err = errors.Forbidden (nil ) // Classic enough! Ah :)
55- err = errors.NotFound (nil ) // Classic enough! Ah :)
56- err = errors.RequestTimeout (nil ) // Classic enough! Ah :)
57- err = errors.InternalServerError (nil ) // Classic enough! Ah :)
58- err = errors.DBError (nil )
59- err = errors.PageTokenInvalid (nil )
60-
61- // Use WithMsg to carry a message.
62- err = errors.Wrap (io.EOF , codeTestError, errors.WithMsg (" test" ))
63- fmt.Println (err.Error ())
64- fmt.Println (errors.Msg (err))
65- fmt.Println (errors.MsgOrDefault (io.EOF , " default error message" ))
41+ // Also, we provide some useful information carrier for you.
42+ err = errors.Wrap (9999 , " io timeout" ).With (io.EOF ).WithCaller ()
43+ fmt.Println (err)
6644}
6745
6846```
6947
7048* [ basic] ( _examples/basic.go )
71- * [ status] ( _examples/status.go )
7249
7350### 👥 Contributing
7451
0 commit comments