面试题答案
一键面试在Go语言中,错误处理的设计哲学是将错误作为函数的返回值进行传递。以下是处理调用多个外部API错误的方法及示例:
- 定义错误类型:为不同类型的错误定义特定的错误类型,方便调用方区分。
package main
import (
"fmt"
)
// 定义自定义错误类型
type APIError struct {
ErrMsg string
}
func (e *APIError) Error() string {
return e.ErrMsg
}
- 调用外部API并处理错误:在调用每个外部API时,捕获错误并返回。
// 模拟调用外部API1
func callAPI1() error {
// 实际调用API的逻辑,这里简单模拟返回错误
return &APIError{"API1调用失败"}
}
// 模拟调用外部API2
func callAPI2() error {
// 实际调用API的逻辑,这里简单模拟成功
return nil
}
- 组合调用并传递错误:在微服务的主逻辑中组合调用这些API,并将错误正确传递给调用方。
func main() {
err := callAPI1()
if err != nil {
fmt.Printf("调用API1出错: %v\n", err)
return
}
err = callAPI2()
if err != nil {
fmt.Printf("调用API2出错: %v\n", err)
return
}
fmt.Println("所有API调用成功")
}
在上述示例中:
- 首先定义了
APIError
自定义错误类型,这样可以在错误信息中携带更多上下文。 callAPI1
和callAPI2
模拟了调用外部API的函数,每个函数都返回错误(如果有)。- 在
main
函数中,依次调用这些API,并在每次调用后检查错误。如果发生错误,打印错误信息并返回,确保错误能够正确传递给调用方,同时不会影响系统的稳定性和可维护性。通过这种方式,每个函数专注于自己的逻辑和错误处理,调用方可以根据返回的错误进行相应处理。