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

Comment personnaliser les erreurs dans Golang

尚
original
2020-01-14 11:51:024532parcourir

Comment personnaliser les erreurs dans Golang

Il existe deux façons de définir des exceptions d'erreur dans go, mais les deux nécessitent que votre valeur de retour soit de type error.

func Control() error {
      //xxxx
}

La première méthode consiste à utiliser les erreurs du package de bibliothèque standard Golang pour définir les erreurs. L'utilisation est très simple, il suffit de renvoyer error.New("string") . Il s’agit du retour d’erreur le plus simple.

La deuxième façon consiste à emprunter la structure struct et à créer une méthode Error() de la struct. Notez que le nom de la méthode est Error, sinon le bug suivant se produira et la méthode Error sera introuvable.

./er.go:25: cannot use equalError literal (type equalError) as type error in return argument:
    equalError does not implement error (missing Error method)

Ce qui suit est une méthode relativement complète d'utilisation d'Erreur. Non seulement les erreurs, mais aussi la méthode struct Error()

#http://xiaorui.cc
package main
 
import (
	"errors"
	"fmt"
)
 
type equalError struct {
	Num int
}
 
//方法名字是Error()
func (e equalError) Error() string {
	return fmt.Sprintf("你现在是数字是 %d ,还是超了55", e.Num)
}
 
func Equal(n int) (int, error) {
	if n > 55 {
		return -1, errors.New("超过了55") //生成一个简单的 error 类型
	}
	return n, nil
}
 
func DiyEqual(n int) (int, error) {
	if n > 55 {
		return -1, equalError{Num: n} // 会调用equalError的Error方法
	}
	return n, nil
}
 
func main() {
	//使用errors.New生成error对象
	if result, err := Equal(100); err != nil {
		fmt.Println("错误:", err)
	} else {
		fmt.Println("结果:", result)
	}
 
	//不适用erros,自定义错误方式.
	if result, err := DiyEqual(100); err != nil {
		fmt.Println("错误:", err)
	} else {
		fmt.Println("结果:", result)
	}
 
}

Recommandations associées : tutoriel golang

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