2
我有一個服務器,我正在寫,我想處理來自conn.Read()的錯誤。具體來說,我不想在客戶端關閉連接的情況下做任何事情,但如果有任何其他錯誤,則記錄錯誤。我遇到了以下問題:如何檢查Go中的特定網絡錯誤?
- 該文檔似乎沒有說出conn.Read()可能返回的錯誤。
- 連接關閉的客戶端似乎是一個EOF錯誤。原來,它的類型是error.errorString。真的嗎?
所以基本上我必須做一個字符串比較「EOF」來告訴我的錯誤是預期的還是真正的錯誤?!?我錯過了什麼嗎?因爲這似乎是目前一個巨大的監督......
啊,優秀!那麼我怎麼會發現我想檢查的錯誤是io.EOF而不詢問StackOverflow?我認爲我錯過了文檔中的某些內容? – prewett
爲了澄清,我假設文檔中有某些東西我錯過了某處,會指向我看看io包,即使我沒有使用io的任何函數? – prewett
@prewett,好吧,我恐怕確實沒有明顯的聯繫,或者它對於某些思維方式的人來說顯而易見 - 讓我解釋一下。 Go是非常正交和最小的,所以實際上stdlib中讀取字節的所有類型都滿足'io.Reader'接口,並且一旦你知道了這個想法,就可以使用實現一個類型的Read()方法字節的TCP流返回什麼'io.Reader.Read()'被定義爲在遇到EOF時返回是不言而喻的。 – kostix