GithubHelp home page GithubHelp logo

about errors usage about go-micro HOT 5 CLOSED

xujinzheng avatar xujinzheng commented on July 18, 2024
about errors usage

from go-micro.

Comments (5)

asim avatar asim commented on July 18, 2024

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.

xujinzheng avatar xujinzheng commented on July 18, 2024

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.

asim avatar asim commented on July 18, 2024

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.

xujinzheng avatar xujinzheng commented on July 18, 2024

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.

asim avatar asim commented on July 18, 2024

No problem.

from go-micro.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.