Maison > Article > développement back-end > Gestion des exceptions du type de fonction Golang
Les types de fonctions ne peuvent pas lancer d'exceptions directement dans le langage Go. Il existe deux manières de gérer les exceptions : Renvoyer le type d'erreur : la fonction peut renvoyer une valeur d'erreur et, en cas d'erreur, elle renvoie des informations sur l'erreur. Utilisez la fonction panique : le déclenchement de la panique peut transmettre une exception, mais utilisez-la avec prudence car cela mettra fin au programme.
Les types de fonctions sont très courants dans le langage Go et nous permettent de créer des valeurs de fonction qui peuvent être transmises à d'autres fonctions, renvoyées sous forme de paramètres ou stockées sous forme de variables.
Cependant, lorsque nous utilisons des types de fonctions pour gérer les erreurs, nous avons besoin d'une gestion spéciale. Contrairement aux fonctions ordinaires, les types de fonctions ne peuvent pas lever d'exceptions. Pour résoudre ce problème, nous pouvons utiliser le type error
. error
类型。
处理函数类型的异常有两种主要方法:
error
类型: 我们可以让函数类型返回一个 error
值,如果发生错误,则返回相应的 error
。panic
函数: 我们可以使用 panic
函数引发并传播异常,但是要谨慎使用,因为 panic
会终止整个程序。我们创建一个函数类型 mathOperation
,它接受两个整数并执行指定的数学运算:
type mathOperation func(int, int) int
我们定义三个函数,它们分别执行加法、减法和除法运算:
func add(a, b int) int { return a + b } func subtract(a, b int) int { return a - b } func divide(a, b int) int { if b == 0 { panic("cannot divide by zero") } return a / b }
然后,我们可以使用这些函数作为 mathOperation
类型的值:
var addOperation mathOperation = add var subtractOperation mathOperation = subtract var divideOperation mathOperation = divide
如果我们尝试除以 0 ,divideOperation
会引发一个 panic
:
result := divideOperation(10, 0) // 会引发 panic
我们可以通过使用 recover
函数来捕获并处理这个 panic
:
func main() { defer func() { if err := recover(); err != nil { log.Println("Error:", err) } }() result := divideOperation(10, 0) fmt.Println(result) }
输出:
Error: cannot divide by zero
或者,我们可以通过使用 error
error
: strong> Nous pouvons demander au type de fonction de renvoyer une valeur error
, et si une erreur se produit, renvoyer la error
correspondante. panic
: Nous pouvons utiliser la fonction panic
pour déclencher et propager des exceptions, mais utilisez-la avec prudence parce que panic
mettra fin à tout le programme. mathOperation
, qui accepte deux entiers et effectue des opérations mathématiques spécifiées : 🎜func divideChecked(a, b int) (int, error) { if b == 0 { return 0, errors.New("cannot divide by zero") } return a / b, nil } func main() { result, err := divideChecked(10, 0) if err != nil { log.Println("Error:", err) } else { fmt.Println(result) } }🎜Nous définissons trois fonctions qui effectuer respectivement des opérations d'addition, de soustraction et de division : 🎜
Error: cannot divide by zero🎜On peut alors utiliser ces fonctions comme valeurs de type
mathOperation
: 🎜rrreee🎜Si on essaie de diviser par 0, divideOperation code> provoquera une <code>panique
: 🎜rrreee🎜Nous pouvons capturer et traiter cette panique
en utilisant la fonction récupérer
: 🎜rrreee🎜sortie :🎜 rrreee🎜 Alternativement, nous pouvons gérer les erreurs en utilisant le type error
: 🎜rrreee🎜Sortie : 🎜rrreeeCe 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!