You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
active/core/errs/fmtr/err_builder.go

99 lines
2.3 KiB

// ------------------------------------------------------------------------
// Project active2
// Active Thing (activething.com) git.activething.com/go
//
// File name err_format.go
// Created by DEV
// Modified 10/04/2024
//
// Copyright 2024 activething.com
// ------------------------------------------------------------------------
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// ------------------------------------------------------------------------
package fmtr
import (
"errs/stack"
"fmt"
"reflect"
)
type (
ErrBuilder struct {
code string
message string
cause error
trace stack.Trace
}
)
func NewErrBuilder(code string, cause error, message string, addTrace bool) *ErrBuilder {
var tc stack.Trace
if addTrace {
tc = stack.MakeStackTrace(3)
}
return &ErrBuilder{
code : code,
cause : cause,
message: message,
trace : tc,
}
}
func NewErrBuilderFormat (cause error, rtype reflect.Type, addTrace bool) *ErrBuilder {
return NewErrBuilder(CodeBuilderError,cause,fmt.Sprintf(fmtErrorTypeFormat,rtype.String()),addTrace) }
func NewErrBuilderUnwrap (cause error, rtype reflect.Type, addTrace bool) *ErrBuilder {
return NewErrBuilder(CodeBuilderError,cause,fmt.Sprintf(fmtErrorFormatUnwrap,rtype.String()),addTrace) }
func NewErrBuildLevel() *ErrBuilder {
return &ErrBuilder{ code : CodeBuilderLevelError} }
func (e ErrBuilder) Code () string {
return e.code }
func (e ErrBuilder) Error() string {
return e.code }
func (e ErrBuilder) Cause() error {
return e.cause }
func (e ErrBuilder) Message() string {
return e.message }
func (e ErrBuilder) StackTrace () stack.Trace {
return e.trace }
func (e ErrBuilder) BuildFormat (builder Builder) {
builder.Build(e.Error(),"core.errs.efmtr.ErrBuilder",func (fb FieldBuilder){
if len(e.message) > 0 {
fb.AddString(FieldNameMessage,e.message)
}
})
}

Powered by TurnKey Linux.