gitee.com/liuxuezhan/go-micro-v1.18.0@v1.0.0/client/grpc/error.go (about)

     1  package grpc
     2  
     3  import (
     4  	"gitee.com/liuxuezhan/go-micro-v1.18.0/errors"
     5  	"google.golang.org/grpc/status"
     6  )
     7  
     8  func microError(err error) error {
     9  	// no error
    10  	switch err {
    11  	case nil:
    12  		return nil
    13  	}
    14  
    15  	// micro error
    16  	if v, ok := err.(*errors.Error); ok {
    17  		return v
    18  	}
    19  
    20  	// grpc error
    21  	if s, ok := status.FromError(err); ok {
    22  		if e := errors.Parse(s.Message()); e.Code > 0 {
    23  			return e // actually a micro error
    24  		}
    25  		return errors.InternalServerError("go.micro.client", s.Message())
    26  	}
    27  
    28  	// do nothing
    29  	return err
    30  }