13

宛先としてソケット ( ) を渡した呼び出しからがerror返されました。リモート ホストは、接続が十分に確立されると単純に接続を切断することが予想されますが、私はそれらから何も受信していません。io.CopyTCPConn

ドロップが発生すると、次のエラーが発生します。

write tcp 192.168.26.5:21277: broken pipe

しかし、私が持っているのはerrorインターフェースだけです。壊れたパイプ エラーを他の種類のエラーと区別するにはどうすればよいですか?

if err.Errno == EPIPE...
4

3 に答える 3

19

壊れたパイプ エラーは、syscall パッケージで定義されています。等値演算子を使用して、エラーを syscall のものと比較できます。syscall エラーの完全なリストについては、 http: //golang.org/pkg/syscall/#constantsを確認してください。このページで「EPIPE」を検索すると、定義されたすべてのエラーがグループ化されて表示されます。

if err == syscall.EPIPE {
    /* ignore */
}

実際の errno 番号を取得したい場合 (かなり役に立ちませんが)、型アサーションを使用できます。

if e, ok := err.(syscall.Errno); ok {
    errno = uintptr(e)
}
于 2012-06-12T20:20:00.197 に答える
-1

インターフェイス以外のすべてがerrorあれば、型アサーションまたは型スイッチを実行して、インターフェイスが保持する具体的な型を明らかにするのに十分です。

于 2012-06-12T19:56:27.537 に答える