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()) } }