Maison > développement back-end > Golang > Comment détecter les erreurs dans Golang

Comment détecter les erreurs dans Golang

(*-*)浩
Libérer: 2019-12-14 13:19:02
original
3431 Les gens l'ont consulté

Comment détecter les erreurs dans Golang

func panic(interface{}) et func recovery() interface{} sont deux fonctions utilisées pour la gestion des erreurs dans Golang.

La fonction de panic est de générer un message d'erreur. À partir de son type de paramètre, vous pouvez voir qu'il peut générer tout type de message d'erreur. (Apprentissage recommandé : go)

Si la panique est appelée quelque part pendant l'exécution de la fonction, un message d'erreur sera immédiatement généré et le processus d'exécution normal de la fonction sera terminer, mais Les instructions defer définies avant la panique dans cette fonction seront exécutées dans l'ordre. La goroutine arrête de s'exécuter immédiatement après.

recover() est utilisé pour capturer les informations de panique.

recover doit être défini dans l'instruction defer avant la panique. Dans ce cas, lorsque la panique est déclenchée, la goroutine ne se terminera pas simplement, mais exécutera l'instruction defer définie avant elle.

Détectez les erreurs de panique définies par vous-même :

package main
import "fmt"
import "math"
func foo(a int) {
    defer fmt.Println("foo退出来了")
    defer func() {
        if r := recover(); r != nil {
            fmt.Printf("捕获到的错误:%s\n", r)
        }
    }()
    if a < 0 {
        panic("必须输入大于0的数")
    }
    fmt.Println("该数的方根为:", math.Sqrt(float64(a)))
}
func main() {
    var a int
    a = 10
    fmt.Printf("a=%d\n", a)
    foo(a)
    var b int
    b = -10
    fmt.Printf("b=%d\n", b)
    foo(b)
    fmt.Println("该goroutine还可以执行")
}
// ///////////
a=10
该数的方根为: 3.1622776601683795
foo退出来了
b=-10
捕获到的错误:必须输入大于0的数
foo退出来了
该goroutine还可以执行
Process finished with exit code 0
Copier après la connexion

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