面试题答案
一键面试Go语言常用错误处理方式
if err != nil
检查:Go语言中函数通常会返回一个错误值,调用者通过检查这个错误值是否为nil
来判断函数是否成功执行。如果err != nil
,则表示函数执行过程中出现了错误,调用者可以根据具体情况进行处理。fmt.Errorf
生成错误:fmt.Errorf
函数用于生成格式化的错误信息。它接受一个格式化字符串和一系列参数,返回一个包含格式化错误信息的error
类型值。
if err != nil
检查和处理错误示例
package main
import (
"fmt"
)
func divide(a, b int) (int, error) {
if b == 0 {
return 0, fmt.Errorf("division by zero")
}
return a / b, nil
}
func main() {
result, err := divide(10, 2)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println("Result:", result)
}
在上述代码中,divide
函数在除数为0时返回一个错误。在 main
函数中,通过 if err != nil
检查 divide
函数返回的错误,并进行相应处理。
fmt.Errorf
函数在错误生成方面的应用示例
package main
import (
"fmt"
)
func readFile(filePath string) ([]byte, error) {
// 这里假设无法读取文件,模拟错误情况
if true {
return nil, fmt.Errorf("unable to read file %s", filePath)
}
// 实际读取文件逻辑,这里省略
return []byte{}, nil
}
func main() {
data, err := readFile("nonexistent.txt")
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println("File data:", string(data))
}
在 readFile
函数中,使用 fmt.Errorf
生成了一个包含文件名的错误信息,方便调用者定位问题。