From fc38a1f4fe6d0325f1f759bf6204b726f89374b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=A5=A5=E8=B6=85?= Date: Sat, 5 Jun 2021 11:09:04 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E8=BF=9BRPC=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/rpc/errors/utils.go | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 pkg/rpc/errors/utils.go diff --git a/pkg/rpc/errors/utils.go b/pkg/rpc/errors/utils.go new file mode 100644 index 0000000..7b078d2 --- /dev/null +++ b/pkg/rpc/errors/utils.go @@ -0,0 +1,32 @@ +// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved. + +package errors + +import ( + "errors" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" +) + +// HumanError 格式化GRPC相关错误 +func HumanError(err error) error { + if err == nil { + return err + } + errStatus, ok := status.FromError(err) + if !ok { + return err + } + switch errStatus.Code() { + case codes.InvalidArgument: + return errors.New("错误的RPC参数:" + err.Error()) + case codes.DeadlineExceeded: + return errors.New("RPC操作超时,请重试:" + err.Error()) + case codes.Unimplemented: + return errors.New("请求的RPC服务或方法不存在,可能是没有升级API节点或者当前节点没有升级:" + err.Error()) + case codes.Unavailable: + return errors.New("RPC当前不可用,请确保API节点已启动,并检查当前节点和API节点之间的网络连接是正常的:" + err.Error()) + } + + return err +}