feat: Initial
This commit is contained in:
commit
f0abca60db
26 files changed
+1112
No files matched your search
@@ -0,0 +1,47 @@
|
||||
package errors
|
||||
|
||||
import (
|
||||
"io"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func ErrorToString(e error) string {
|
||||
builder := &strings.Builder{}
|
||||
AppendError(builder, e, 0)
|
||||
return builder.String()
|
||||
}
|
||||
|
||||
func AppendError(writer io.StringWriter, err error, depth uint) {
|
||||
padding := strings.Repeat(" ", int(depth))
|
||||
|
||||
var uniError UniverseError
|
||||
if As(err, &uniError) {
|
||||
errorType := uniError.Type()
|
||||
if errorType != nil {
|
||||
_, _ = writer.WriteString(errorType.Name)
|
||||
_, _ = writer.WriteString(": ")
|
||||
}
|
||||
|
||||
_, _ = writer.WriteString(uniError.Message())
|
||||
|
||||
stack := uniError.StackTrace()
|
||||
if stack != nil {
|
||||
for _, value := range stack {
|
||||
_, _ = writer.WriteString("\n")
|
||||
_, _ = writer.WriteString(padding)
|
||||
_, _ = writer.WriteString(value)
|
||||
}
|
||||
}
|
||||
|
||||
cause := uniError.Cause()
|
||||
if cause != nil {
|
||||
_, _ = writer.WriteString("\n")
|
||||
_, _ = writer.WriteString(padding)
|
||||
_, _ = writer.WriteString("Caused by: ")
|
||||
AppendError(writer, cause, depth+1)
|
||||
}
|
||||
|
||||
} else {
|
||||
_, _ = writer.WriteString(err.Error())
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user