package exception import ( "context" "fmt" ) // 12 chars len // :1=status // :3=service // :2=endpoint // :1=common/specific // :5=original type Builder struct { Status string Service string Endpoint string Type string Original string Error error ErrorCode string } func (self *Builder) SetStatus(s string) *Builder { self.Status = s return self } func (self *Builder) SetService(s string) *Builder { self.Service = s return self } func (self *Builder) SetEndpoint(s string) *Builder { self.Endpoint = s return self } func (self *Builder) SetType(s string) *Builder { self.Type = s return self } func (self *Builder) SetOriginal(s string) *Builder { self.Original = s return self } func (self *Builder) SetError(e error) *Builder { self.Error = e return self } func (self *Builder) build() { self.ErrorCode = fmt.Sprintf("%s%s%s%s%s", self.Status, self.Service, self.Endpoint, self.Type, self.Original, ) } func (self *Builder) Throw(ctx *context.Context) *Builder { self.build() if self.Error != nil { ErrorHandler(ctx, self.Status, self.ErrorCode, self.Error) } return self } func (self *Builder) String() string { self.build() return self.ErrorCode }