Maison > Article > développement back-end > Comment gérer les erreurs d'utilisation des pipes dans Go ?
La transmission des erreurs via des pipelines peut exposer efficacement les erreurs de fonctionnement à l'extérieur, afin qu'elles puissent être traitées uniformément dans la logique métier. L'utilisation spécifique est la suivante : tapez le pipeline et indiquez clairement le type de données et le type d'erreur. Utilisez une structure de résultat typée du côté de l'expéditeur pour transmettre les données et les erreurs. Utilisez des assertions de type côté récepteur pour recevoir des données et des erreurs du pipeline et les gérer en fonction de la présence ou non d'erreurs.
Comment utiliser les pipelines en langage Go pour gérer les erreurs
Les pipelines sont un mécanisme de communication simultané qui permet un transfert de données efficace entre les goroutines. Les pipelines peuvent non seulement transférer des données, mais également des erreurs, ce qui nous permet d'exposer les erreurs opérationnelles à l'extérieur via des pipelines, de les traiter uniformément dans la logique métier et d'améliorer l'efficacité du développement.
Comment utiliser
Lorsque vous utilisez un pipeline pour transmettre des erreurs, vous devez saisir le pipeline et clarifier le type de données transmises dans le pipeline, y compris le type de données et le type d'erreur. Comme le montre l'exemple suivant :
type result struct { data int err error } var ch = make(chan result)
Cas pratique
Ce qui suit est un cas pratique montrant comment utiliser les tuyaux pour transmettre les erreurs :
package main import ( "errors" "fmt" "time" ) func task(ch chan<- result) { time.Sleep(time.Second) if n := rand.Intn(5); n % 2 == 0 { ch <- result{n, nil} } else { ch <- result{0, errors.New("error occurred")} } } func main() { ch := make(chan result) defer close(ch) go task(ch) select { case r := <-ch: if r.err != nil { fmt.Println("Error: ", r.err) } else { fmt.Println("Data: ", r.data) } case <-time.After(time.Second * 2): fmt.Println("Timeout") } }
Exécuter les résultats :
Error: error occurred
Dans cet exemple, task
La fonction simule une tâche asynchrone en utilisant des nombres aléatoires. Si le nombre occasionnel est pair, il enverra des données sans aucune erreur ; sinon, il enverra une erreur. La fonction main
reçoit les résultats du tube et les gère en fonction de la présence ou non d'erreurs. task
函数使用随机数模拟一个异步任务。如果随机数是偶数,它将发送没有任何错误的数据;否则,它将发送一个错误。main
函数从管道中接收结果,并根据是否存在错误进行处理。
注意:
select
select
pour traiter les données de plusieurs pipelines ou gérer les délais d'attente des pipelines. 🎜🎜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!