Détermination des erreurs de canal cassé dans Go
Lors de l'exécution d'opérations d'E/S impliquant des sockets, il est courant de rencontrer des erreurs de canal cassé. Ces erreurs indiquent que l'hôte distant a interrompu la connexion, entraînant l'échec d'une opération « d'écriture ».
Si vous recevez une erreur provenant d'un appel io.Copy qui implique un socket comme destination, vous pouvez rencontrez le message d'erreur suivant :
"write tcp 192.168.26.5:21277 : tuyau cassé"
Pour différencier les erreurs de tuyau cassé des autres types d'erreurs, vous pouvez utiliser le package Go syscall. La constante syscall.EPIPE indique l’erreur de canal cassé. Vous pouvez comparer votre erreur à syscall.EPIPE en utilisant l'opérateur d'égalité :
<code class="go">if err == syscall.EPIPE { // Ignore the error since it's a broken pipe }</code>
Vous pouvez également effectuer une assertion de type sur l'erreur pour obtenir le numéro d'erreur réel :
<code class="go">if e, ok := err.(syscall.Errno); ok { errno = uintptr(e) }</code>
Cette approche vous permet de travailler directement avec le numéro d'erreur, même si son utilité est limitée dans la plupart des cas. En filtrant les erreurs de canal rompu, vous pouvez les gérer de manière appropriée et vous assurer que votre application ne plante pas en raison de pertes de connexion inattendues.
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!