添加错误处理

This commit is contained in:
eatmoreapple 2022-09-23 19:49:31 +08:00
parent 1b926f3ee4
commit 9b1bc9189b
4 changed files with 48 additions and 21 deletions

View File

@ -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
View 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
View 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")
}
}

View File

@ -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)
}
}
}