我是 golang 新手一枚。
假设我有一个方法,请求一个第三方的接口并返回结果,这个方法可以产生多个错误:网络错误,状态码错误,解析数据错误,数据状态错误。
在 PHP 和 Python 中,我们可以自定义异常类,轻松处理以上几个错误,但是在 golang 中就比较尴尬了,这个时候,如何优雅的处理这些错误呢?
要根据不同的错误,外层做出不同的逻辑处理。
我是 golang 新手一枚。
假设我有一个方法,请求一个第三方的接口并返回结果,这个方法可以产生多个错误:网络错误,状态码错误,解析数据错误,数据状态错误。
在 PHP 和 Python 中,我们可以自定义异常类,轻松处理以上几个错误,但是在 golang 中就比较尴尬了,这个时候,如何优雅的处理这些错误呢?
要根据不同的错误,外层做出不同的逻辑处理。
golang
通过多返回值来处理错误,一般会返回一个error
类型的结果参数,这是一个接口,在工程实践中可以返回自定义实现的error,调用方根据接口定义使用结果断言转成具体的error实现,通过获取错误码
来区分不同的异常。
7 回答5.3k 阅读
6 回答6.8k 阅读✓ 已解决
4 回答2.3k 阅读
1 回答3.3k 阅读
2 回答2.2k 阅读
1 回答2.1k 阅读
1 回答1.5k 阅读
你应该想说的是“错误”(Error)而非“异常”(Panic),一些语言里它俩的区别比较模糊,但 Golang 里它俩完全不一样。
如何区分错误类型可以看这篇:https://zhuanlan.zhihu.com/p/... 以网络错误举例的,你可以触类旁通应用在所以错误类型上,这也是 Golang 标准库里的做法。