Defined in github.com/cloudwego/kitex/pkg/kerrors
ErrInternalException
, framework internal error, it cloud be:
ErrNotSupported
, "operation not supported"
, have some operation not supported yetErrNoResolver
, "no resolver available"
, no resolver is availableErrNoDestService
, "no dest service"
, target service is not specifiedErrNoDestAddress
, "no dest address"
, target address is not specifiedErrNoConnection
, "no connection available"
, not connection is availableErrNoIvkRequest
, "invoker request not set"
, request is not set in invoker modeErrServiceDiscovery
, service discovery error, see error message for detail.
ErrGetConnection
, get connection error, see error message for detail.
ErrLoadbalance
, loadbalance error, see error message for detail.
ErrNoMoreInstance
, no more instance to retry, see last call error message for detail.
ErrRPCTimeout
, RPC timeout, see error message for detail.
ErrACL
, RPC is rejected by ACL, see error message for detail.
ErrCircuitBreak
, request is circuitbreaked, it could be two type of circuitbreak:
ErrServiceCircuitBreak
, "service circuitbreak"
, service level circuitbreak encountered, request is rejected.ErrInstanceCircuitBreak
, "instance circuitbreak"
, instance level circuitbreak encountered, request is rejected.ErrRemoteOrNetwork
, remote server error, or network error, see error message for detail.
[remote]
indicates the error is returned by server
ErrOverlimit
, overload protection error, it cloud be:
ErrConnOverLimit
, "too many connections"
, connection overload, connection number is over limitErrQPSOverLimit
, "request too frequent"
, concurrent request overload, concurrent request number is over limitErrPanic
, panic detected.
[happened in biz handler]
indicated panic happened in server handler, usually call stack will attached to error message.
ErrBiz
, server handler error.
ErrRetry
, retry error, see error message for detail.
These error is thrift Application Exception, usually these error will be wrapped to remote or network error
.
Code | Name | Meaning |
---|---|---|
0 | UnknownApplicationException | Unknown Error |
1 | UnknownMethod | Unknown Function |
2 | InValidMessageTypeException | Invalid Message Type |
3 | WrongMethodName | Wrong Method Name |
4 | BadSequenceID | Bad Sequence ID |
5 | MissingResult | Result is missing |
6 | InternalError | Internal Error |
7 | ProtocolError | Protocol Error |
Use IsKitexError
in kerrors
package
import "github.com/cloudwego/kitex/pkg/kerrors"
...
isKitexErr := kerrors.IsKitexError(kerrors.ErrInternalException) // return true
Use errors.Is
, detailed error cloud use to check detailed error:
import "errors"
import "github.com/cloudwego/kitex/client"
import "github.com/cloudwego/kitex/pkg/kerrors"
...
_, err := echo.NewClient("echo", client.WithResolver(nil)) // return kerrors.ErrNoResolver
...
isKitexErr := errors.Is(err, kerrors.ErrNoResolver) // return true
detailed error is also a basic error:
import "errors"
import "github.com/cloudwego/kitex/client"
import "github.com/cloudwego/kitex/pkg/kerrors"
...
_, err := echo.NewClient("echo", client.WithResolver(nil)) // return kerrors.ErrNoResolver
...
isKitexErr := errors.Is(err, kerrors.ErrInternalException) // return true
Specially, you can use IsTimeoutError
in kerrors
to check whether it is a timeout
error
All detailed errors is defined by DetailedError
in kerrors
, so you can use errors.As
to get specified DetailedError
, like:
import "errors"
import "github.com/cloudwego/kitex/client"
import "github.com/cloudwego/kitex/pkg/kerrors"
...
_, err := echo.NewClient("echo", client.WithResolver(nil)) // return kerrors.ErrNoResolver
...
var de *kerrors.DetailedError
ok := errors.As(err, &ke) // return true
if de.ErrorType() == kerrors.ErrInternalException {} // return true
DetailedError
provide following functions to get detail message.
ErrorType() error
, used to get basic error typeStack() string
, used to get stack (for now only works for ErrPanic
)