Maison > développement back-end > Golang > Comment la valeur de retour de la fonction Golang gère-t-elle les erreurs ?

Comment la valeur de retour de la fonction Golang gère-t-elle les erreurs ?

WBOY
Libérer: 2024-04-14 10:09:01
original
474 Les gens l'ont consulté

Les fonctions Go utilisent le type d'erreur pour représenter les erreurs. L'appelant peut déterminer si la fonction s'est exécutée avec succès en vérifiant la valeur de l'erreur. Les méthodes de gestion des erreurs incluent : l’utilisation de l’instruction if ou de la fonction check du package errchk. Par exemple : utilisez l'instruction if pour gérer les erreurs : if err != nil { fmt.Println(err) } ; utilisez le package errchk pour gérer les erreurs : errchk.Check(err) // Si err n'est pas nul, imprimez une erreur et quittez le programme.

Golang 函数返回值如何处理错误?

Comment gérer les erreurs dans la valeur de retour de la fonction Go ?

Dans Go, les fonctions peuvent utiliser le type error pour représenter les erreurs. Lorsqu'une fonction renvoie une erreur, l'appelant peut déterminer si la fonction s'est exécutée avec succès en vérifiant la valeur de error. error 类型来表示错误。当一个函数返回错误时,调用者可以通过检查 error 的值来确定函数是否成功执行。

为了处理函数返回的错误,我们可以使用 if 语句或 errchk 包下的 check 函数。

使用 if 语句

使用 if 语句处理错误是最常见的方法。示例:

func divide(a, b int) (int, error) {
    if b == 0 {
        return 0, errors.New("division by zero")
    }
    return a / b, nil
}

func main() {
    result, err := divide(10, 2)
    if err != nil {
        fmt.Println(err)
    } else {
        fmt.Println(result)
    }
}
Copier après la connexion

使用 errchk

errchk 包提供了一个 check

Afin de gérer les erreurs renvoyées par les fonctions, nous pouvons utiliser l'instruction if ou la fonction check sous le package errchk.

Utilisez l'instruction if

L'utilisation de l'instruction if pour gérer les erreurs est la méthode la plus courante. Exemple : 🎜
import "github.com/kisielk/errchk"

func main() {
    result, err := divide(10, 2)
    errchk.Check(err)  // 如果 err 不为 nil,则打印错误并退出程序

    fmt.Println(result)
}
Copier après la connexion
🎜Utilisation du package errchk 🎜🎜Le package errchk fournit une fonction check qui simplifie la gestion des erreurs. Exemple : 🎜
import (
    "bufio"
    "bytes"
    "errors"
    "fmt"
    "io"
)

// readFile 读取给定文件的内容,并返回一个字节切片
func readFile(path string) ([]byte, error) {
    f, err := os.Open(path)
    if err != nil {
        return nil, fmt.Errorf("os.Open: %w", err)  // 使用 fmt.Errorf 包装错误
    }
    defer f.Close()  // 使用 defer 语句在函数返回前关闭文件

    buf := new(bytes.Buffer)
    scanner := bufio.NewScanner(f)
    for scanner.Scan() {
        buf.WriteString(scanner.Text())
        buf.WriteByte('\n')
    }
    if err := scanner.Err(); err != nil {
        return nil, fmt.Errorf("scanner.Err: %w", err)
    }

    return buf.Bytes(), nil
}

func main() {
    data, err := readFile("data.txt")
    if err != nil {
        fmt.Println(err)
    } else {
        fmt.Println(string(data))
    }
}
Copier après la connexion
🎜Cas pratique🎜🎜Voici un cas pratique utilisant la gestion des erreurs, qui implémente une fonction de lecture de fichier : 🎜rrreee

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal