添加错误处理
This commit is contained in:
parent
1b926f3ee4
commit
9b1bc9189b
@ -77,7 +77,7 @@ func (c *Client) do(req *http.Request) (*http.Response, error) {
|
||||
}
|
||||
resp, err := c.Client.Do(req)
|
||||
if err != nil {
|
||||
err = NetworkErr{error: err}
|
||||
err = ErrorWrapper(NetworkErr, err.Error())
|
||||
}
|
||||
for _, hook := range c.HttpHooks {
|
||||
hook.AfterRequest(resp, err)
|
||||
|
33
errors.go
Normal file
33
errors.go
Normal file
@ -0,0 +1,33 @@
|
||||
package openwechat
|
||||
|
||||
import (
|
||||
"errors"
|
||||
)
|
||||
|
||||
type errorWrapper struct {
|
||||
err error
|
||||
msg string
|
||||
}
|
||||
|
||||
func (e errorWrapper) Unwrap() error { return e.err }
|
||||
|
||||
func (e errorWrapper) Error() string { return e.msg }
|
||||
|
||||
func ErrorWrapper(err error, msg string) error {
|
||||
return &errorWrapper{msg: msg, err: err}
|
||||
}
|
||||
|
||||
var NetworkErr = errors.New("wechat network error")
|
||||
|
||||
func IsNetworkError(err error) bool {
|
||||
return errors.Is(err, NetworkErr)
|
||||
}
|
||||
|
||||
// IgnoreNetworkError 忽略网络请求的错误
|
||||
func IgnoreNetworkError(errHandler func(err error)) func(error) {
|
||||
return func(err error) {
|
||||
if !IsNetworkError(err) {
|
||||
errHandler(err)
|
||||
}
|
||||
}
|
||||
}
|
14
errors_test.go
Normal file
14
errors_test.go
Normal file
@ -0,0 +1,14 @@
|
||||
package openwechat
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestIsNetworkError(t *testing.T) {
|
||||
var err = errors.New("test error")
|
||||
err = ErrorWrapper(NetworkErr, err.Error())
|
||||
if !IsNetworkError(err) {
|
||||
t.Error("err is not network error")
|
||||
}
|
||||
}
|
20
items.go
20
items.go
@ -161,23 +161,3 @@ type PushLoginResponse struct {
|
||||
func (p PushLoginResponse) Ok() bool {
|
||||
return p.Ret == "0" && p.UUID != ""
|
||||
}
|
||||
|
||||
type NetworkErr struct{ error }
|
||||
|
||||
func (n NetworkErr) Unwrap() error {
|
||||
return n.error
|
||||
}
|
||||
|
||||
func IsNetworkError(err error) bool {
|
||||
_, ok := err.(NetworkErr)
|
||||
return ok
|
||||
}
|
||||
|
||||
// IgnoreNetworkError 忽略网络请求的错误
|
||||
func IgnoreNetworkError(errHandler func(err error)) func(error) {
|
||||
return func(err error) {
|
||||
if !IsNetworkError(err) {
|
||||
errHandler(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user