Maison  >  Article  >  développement back-end  >  panique et récupération dans la gestion des exceptions Golang

panique et récupération dans la gestion des exceptions Golang

WBOY
WBOYoriginal
2024-04-15 18:15:02377parcourir

Dans Go, Panic et Recover sont utilisés pour la gestion des exceptions. Panic est utilisé pour signaler les exceptions et Recover est utilisé pour récupérer des exceptions. Panic arrêtera l'exécution du programme et générera une valeur d'exception de type interface{}. Recover peut intercepter une exception d'une fonction différée ou d'une goroutine, renvoyant la valeur d'exception de type interface{} qu'elle renvoie.

panique et récupération dans la gestion des exceptions Golang

Panic et Recover dans la gestion des exceptions du langage Go

Dans le langage Go, les mots-clés panic et recover sont des mécanismes importants pour la gestion des exceptions. panic est utilisé pour signaler les exceptions, et recover est utilisé pour récupérer des exceptions. panicrecover 关键字是异常处理的重要机制。panic 用于报告异常,而 recover 用于从异常中恢复。

Panic

panic 关键字用于报告一个异常条件,它会立即停止程序执行,并打印堆栈信息。使用 panic 时,程序会抛出一个 interface{} 类型的异常值。例如:

package main

func main() {
    panic("发生了异常")
}

Recover

recover 关键字用于从 panic 中恢复。它可以从当前 goroutine 返回一个 interface{} 类型的异常值。recover 只能在延迟函数或 goroutine 中使用。例如:

package main

import "fmt"

func main() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("捕获到异常:", r)
        }
    }()
    panic("发生了异常")
}

实战案例

假设我们有一个函数 divide,它计算两个数的商:

func divide(a, b int) float64 {
    if b == 0 {
        panic("除数不能为零")
    }
    return float64(a) / float64(b)
}

为了处理 divide 函数中可能发生的异常,我们可以使用 recover

Panic

🎜🎜 Le mot-clé panic est utilisé pour signaler une condition d'exception, qui arrêtera immédiatement l'exécution du programme et imprimera les informations sur la pile. Lors de l'utilisation de panic, le programme générera une valeur d'exception de type interface{}. Par exemple : le mot-clé 🎜
func main() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("捕获到异常:", r)
        }
    }()

    fmt.Println(divide(10, 2))
    fmt.Println(divide(10, 0))
}
🎜🎜Recover🎜🎜🎜recover est utilisé pour récupérer de panic. Il peut renvoyer une valeur d'exception de type interface{} à partir de la goroutine actuelle. recovery ne peut être utilisé que dans des fonctions différées ou des goroutines. Par exemple : 🎜
5
捕获到异常: 除数不能为零
🎜🎜Cas pratique🎜🎜🎜Supposons que nous ayons une fonction divide qui calcule le quotient de deux nombres : 🎜rrreee🎜Afin de gérer ce qui peut arriver dans la divide Pour les exceptions, nous pouvons utiliser <code>recover Mot-clé : 🎜rrreee🎜Sortie : 🎜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!

Déclaration:
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