Maison >développement back-end >Golang >Comment puis-je vérifier le type d'une erreur personnalisée dans Go ?

Comment puis-je vérifier le type d'une erreur personnalisée dans Go ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-25 20:43:19796parcourir

How Can I Check the Type of a Custom Error in Go?

Personnalisation des types d'erreurs dans Go

Enrichir vos applications Go avec des types d'erreurs personnalisés améliore la gestion des erreurs, mais la manipulation de ces types personnalisés peut être difficile. Examinons la question de la vérification du type d'erreur personnalisée.

Le problème

Considérons le type d'erreur personnalisée suivant :

type ModelMissingError struct {
    msg string // description of error
}

func (e *ModelMissingError) Error() string { return e.msg }

Dans une méthode, nous peut générer une erreur personnalisée :

return Model{}, &ModelMissingError{"no model found for id"}

La requête

Pour déterminer si une erreur est spécifique type personnalisé, nous devons vérifier son type. Cependant, l'approche if err == model.ModelMissingError échoue.

La solution

Go fournit l'expression virgule ok pour vérifier l'assertion de type :

serr, ok := err.(*model.ModelMissingError)

Cette instruction affirme que la variable d'erreur err contient le type model.ModelMissingError et attribue la valeur sous-jacente à la variable ser. Si err ne contient pas le type attendu, l'instruction retournera nil pour serr et false pour ok.

En utilisant l'idiome virgule ok, nous pouvons vérifier efficacement le type d'une erreur personnalisée et la gérer en conséquence.

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
Article précédent:Arrêtez tôt pour gagner !Article suivant:Arrêtez tôt pour gagner !