我想在 Go 中创建层次结构错误。我们可以在 Go 中实现这一点吗?例如,我有以下两个错误。
type Error1 struct {
reason string
cause error
}
func (error1 Error1) Error() string {
if error1.cause == nil || error1.cause.Error() == "" {
return fmt.Sprintf("[ERROR]: %s\n", error1.reason)
} else {
return fmt.Sprintf("[ERROR]: %s\nCaused By: %s\n", error1.reason, error1.cause)
}
}
type Error2 struct {
reason string
cause error
}
func (error2 Error2) Error() string {
if error2.cause == nil || error2.cause.Error() == "" {
return fmt.Sprintf("[ERROR]: %s\n", error2.reason)
} else {
return fmt.Sprintf("[ERROR]: %s\nCause: %s", error2.reason, error2.cause)
}
}
我想要一个由两个子类型和CommonError组成的错误类型,以便我可以执行以下操作。Error1Error1
func printType(param error) {
switch t := param.(type) {
case CommonError:
fmt.Println("Error1 or Error 2 found")
default:
fmt.Println(t, " belongs to an unidentified type")
}
}
有办法实现这一点吗?
编辑:
在类型切换中,我们可以像这样使用多个错误: case Error1, Error2:但是当我有大量错误时,或者当我需要对模块内的错误进行一些抽象时,这种方法不会是最好的方法。
慕盖茨4494581
相关分类