面试题答案
一键面试忽视错误返回值导致的问题场景示例
假设我们在Go语言中进行文件读取操作:
package main
import (
"fmt"
"os"
)
func main() {
data, _ := os.ReadFile("nonexistentfile.txt")
fmt.Println(string(data))
}
在这个例子中,os.ReadFile
函数用于读取文件内容,它返回读取的数据和可能发生的错误。这里我们忽视了错误返回值,使用_
占位符代替。如果文件不存在(如上述代码中的nonexistentfile.txt
),程序不会报错,而是继续执行,data
将是一个空切片,然后尝试将空切片转换为字符串并打印,这可能导致在后续逻辑中出现意想不到的错误,而且由于没有对错误进行处理,很难排查出问题根源是文件读取失败。
正确处理方式
package main
import (
"fmt"
"os"
)
func main() {
data, err := os.ReadFile("nonexistentfile.txt")
if err != nil {
fmt.Printf("读取文件时发生错误: %v\n", err)
return
}
fmt.Println(string(data))
}
在上述代码中,我们检查了os.ReadFile
返回的错误值err
。如果err
不为nil
,说明读取文件过程中发生了错误,我们打印出错误信息并提前返回,避免程序继续执行错误的逻辑,从而有效避免因忽视错误返回值而导致的难以排查的问题。