使用自定义错误类型丰富 Go 应用程序可以增强错误处理,但操作这些自定义类型可能具有挑战性。让我们深入研究检查自定义错误类型的问题。
考虑以下自定义错误类型:
type ModelMissingError struct { msg string // description of error } func (e *ModelMissingError) Error() string { return e.msg }
在一个方法中,我们可以抛出自定义错误:
return Model{}, &ModelMissingError{"no model found for id"}
To确定错误是否是特定的自定义类型,我们需要检查其类型。然而, if err == model.ModelMissingError 的方法失败了。
Go 提供了 comma ok idiom 来检查类型断言:
serr, ok := err.(*model.ModelMissingError)
该语句断言错误变量 err 持有 model.ModelMissingError 类型并且将基础值分配给变量 serr。如果 err 不符合预期的类型,则该语句将为 serr 返回 nil,为 ok 返回 false。
通过使用逗号 ok 习惯用法,我们可以有效地验证自定义错误的类型并进行相应的处理。
以上是如何检查Go中自定义错误的类型?的详细内容。更多信息请关注PHP中文网其他相关文章!