Maison > développement back-end > Golang > Comment calculer les erreurs de connexion dans Go 1.20 ?

Comment calculer les erreurs de connexion dans Go 1.20 ?

WBOY
Libérer: 2024-02-11 18:57:08
avant
937 Les gens l'ont consulté

Go 1.20 中如何计算连接错误?

Éditeur PHP Apple vous propose une introduction sur la façon de calculer les erreurs de connexion dans la version Go 1.20. Dans la nouvelle version, le langage Go fournit une méthode de calcul des erreurs de connexion plus précise, qui permet de mieux surveiller et gérer les anomalies de connexion réseau. Grâce à un calcul précis des erreurs de connexion, les développeurs peuvent localiser et résoudre les problèmes de connexion réseau plus rapidement, améliorant ainsi la stabilité et les performances du programme. Cet article présentera en détail le principe et l'utilisation du calcul des erreurs de connexion dans la version Go 1.20 pour aider les développeurs à mieux gérer les anomalies de connexion réseau.

Contenu de la question

Si je comprends bien, errors.Join() est un remplacement prêt à l'emploi des types de collecte multi-erreurs tels que hashcorp/multierror , qui collecte les erreurs qui se produisent en parallèle. Ce problème ne résout pas les erreurs générales d’emballage/dépliage.

Lorsque j'ai remplacé le code de production, certains tests ont échoué lors de la tentative de calcul des erreurs de connexion. Le nombre et le type d’erreurs sont importants dans la gestion de l’analyse de rentabilisation. Cela fonctionne pour hashcorp/multierror car une certaine chaîne est générée telle que 3 错误发生.

package main

import "errors"

func doSomething() error {
    var multierror error
    err1 := errors.New("Hello")
    multierror = errors.Join(err1, err1)
    err2 := errors.New("World")
    multierror = errors.Join(err2, err1)

    return multierror
}

// somewhere else
func test_doSomething(t *testing.T) {
   actual := doSomething()
   assert.Len(t, 2, len(actual)????) // help
}
Copier après la connexion

Comment compter le nombre d'erreurs après utilisation errors.Join() ?

Je ne trouve pas de moyen de vérifier la nature de la tranche d'erreur à l'intérieur de l'erreur de connexion, et vérifier ladite tranche d'erreur elle-même est impossible car elle est privée.

Utiliser errors.Unwrap(err) pourrait être un moyen, même si tout ce que j'obtiens est une erreur ou nil (si c'est la dernière). Sauf pour errors.As/.Is, qui ne nous permet pas tout à fait de résoudre les erreurs de comptage. errors.Unwrap(err) 可能是一种方法,尽管我得到的只是一个错误或 nil (如果它是最后一个)。除了 errors.As/.Is 之外,它并不完全让我们解决计数错误。

解决方法

errors.Join()Solution

errors.Join() 返回的 error 将有一个 Unwrap() []error Enregistrement :

Donc

l'erreur renvoyée aura une méthode Unwrap() []error.

Type Assertion

Contient le type d'interface de cette méthode, vous pouvez l'appeler et elle renverra l'erreur de tranche connectée : Par exemple :

err1 := errors.New("err1")
err2 := errors.New("err2")
err := errors.Join(err1, err2)

if uw, ok := err.(interface{ Unwrap() []error }); ok {
    errs := uw.Unwrap()
    fmt.Println("Number of joined errors:", len(errs))
}
Copier après la connexion
🎜Cela affichera (essayez-le sur 🎜Go Playground🎜) : 🎜
Number of joined errors: 2
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:stackoverflow.com
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