Go语言如何处理不同的错误

比如调用一个函数(假设此函数并不是你写的,可能抛出多种错误信息)会可能返回错误信息。现在普遍的做法是判断err!=nil。
这样只是知道有错误发生,不知道错误的具体类型。

我想根据不同的错误类型,去做不同的处理。应该如何做呢?难道只能判断错误的字符串?

阅读 2.9k
2 个回答

一般包都暴露错误和错误类型
比如

package A

type ErrAwesome struct {
}

var (
     ErrAwe = &ErrAwesome{}
)

这样就可以在你的代码里

package B

_, err := A.Func()
//判断错误
if err == ErrAwe {
}
//判断错误类型
if _, ok := err.(ErrAwesome); ok {
}

反过来讲,自己写的包也该合理的暴露错误

如果不是你写的,没什么好方法。
所以在设计库的时候,如果有这方面的需求的话,就要自己设计 error 接口

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题