MST
星途 面试题库

面试题:Go语言中错误处理的常用方式有哪些

在Go语言里,错误处理是一项重要的功能。请详细阐述Go语言中常用的错误处理方式,并举例说明如何使用 `if err != nil` 来检查和处理错误,以及 `fmt.Errorf` 函数在错误生成方面的应用。
13.7万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试

Go语言常用错误处理方式

  1. if err != nil 检查:Go语言中函数通常会返回一个错误值,调用者通过检查这个错误值是否为 nil 来判断函数是否成功执行。如果 err != nil,则表示函数执行过程中出现了错误,调用者可以根据具体情况进行处理。
  2. 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 生成了一个包含文件名的错误信息,方便调用者定位问题。