添加错误处理
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)
|
resp, err := c.Client.Do(req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
err = NetworkErr{error: err}
|
err = ErrorWrapper(NetworkErr, err.Error())
|
||||||
}
|
}
|
||||||
for _, hook := range c.HttpHooks {
|
for _, hook := range c.HttpHooks {
|
||||||
hook.AfterRequest(resp, err)
|
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 {
|
func (p PushLoginResponse) Ok() bool {
|
||||||
return p.Ret == "0" && p.UUID != ""
|
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