Comments (5)
What do you define as a business error? This is a good point though and its come up multiple times. I think some want to be able to define which errors are appropriate for blacklisting while others define those "business" level errors in the Response.
I look at something like the Google APIs and see that more feature rich errors are returned within the response itself.
It might be that we change blacklisting to a predefined set of errors such as timeouts and internal server error.
from go-micro.
How about add error namespace or error level in Error
struct ?
type Error struct {
Namespace string `json:"namespace"`
Id string `json:"id"`
Code int32 `json:"code"`
Detail string `json:"detail"`
Status string `json:"status"`
}
type Error struct {
Level int32 `json:"level"`
Id string `json:"id"`
Code int32 `json:"code"`
Detail string `json:"detail"`
Status string `json:"status"`
}
if the namespace
is system
, then the micro framework will known some system errors happened.
or
if the level
> 1 (internal=0, service=1, business=2), micro
will ignore this error.
Our team currently using the errors package of http://github.com/gogap/errors, and we define errors as following
define errors
const (
FundsErrNamespace = "FUNDS"
)
var(
ErrIDCardTypeNotMatch = errors.TN(FundsErrNamespace, 82022, "user id card type does not match, id: {{.cardId}}")
)
use errors
// business logics
err=ErrIDCardTypeNotMatch.New(errors.Params{"cardId":"ABC12345"})
return
whether errors is "system" or "business", we will known the error namespace.
from go-micro.
Nothing expects that a go-micro/errors.Error be passed in so its difficult to make that assumption and define namespace or levels. It's a helpful package for defining more verbose errors if you want it, but its optional.
For the time being you have two options. Either you can define your business level errors as part of the response or create a selector that checks these errors differently.
from go-micro.
We will create a private selector
for this issue, so ours developer will not care about errors
usage .Thanks for your response.
from go-micro.
No problem.
from go-micro.
Related Issues (20)
- [BUG] Version V2.9.1 CLI no longer exists HOT 5
- grpc stream use async socket send, but seem use them same buffer, the newer msg seems overwrite the underlying buffer HOT 4
- Tag latest v3 changes (v3.7.2) HOT 1
- [go-micro/auth.Inspect()] Is this function working? HOT 2
- how can i writter log to file? HOT 4
- [BUG]micro v4 can't register service HOT 10
- how can i pass http request headers through metadata?
- [BUG] go.micro.client.transport write: broken pipe
- [BUG] for v4.9.0 to RegisterSubscriber with Queue
- go-micro v4版本 客户端请求超时,,在go-micro怎么配置请求时间 HOT 2
- v4 v4.10.2 can't subscribe kafka topic anymore? HOT 1
- call Requset Timeout with detail <nil> HOT 2
- Using rabbitmq as broker in service , fail to publish mq message with " service not found" HOT 1
- Doesn't go-micro support lowercase grpc method name in proto ? HOT 1
- Client-side Retries mechanism causes server-side code to be called multiple times HOT 1
- [BUG] v2 has no dependency to github.com/micro/cli/v2 v2.1.2 HOT 1
- [BUG] v4.9.0 rpc_server.go register function read lock re-entry HOT 1
- [BUG]V4.10.2 rpc_client.go Call function easily happen RWMutex‘s read lock re-entry then deadlock HOT 1
- [BUG] WARNING: DATA RACE HOT 1
- Notice: Looking for a new owner
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from go-micro.