最近項目雖然已經在正常運行,可是偶爾會有一些不知名的錯誤冒出來,好比時不時報一個數據庫主鍵重複或者某些時候會有null的異常報出來。看看代碼寫完能跑起來還只是開始而已,須要不斷精進重構,才能讓代碼運行流暢,今天就發現了另外一個沒有見過的問題:Broken pipe。java
pipe是管道的意思,管道里面是數據流,一般是從文件或網絡套接字讀取的數據。 當該管道從另外一端忽然關閉時,會發生數據忽然中斷,便是broken。 對於文件File來講,這多是文件安裝在已斷開鏈接的光盤或遠程網絡上。 對於socket來講,多是網絡被拔出或另外一端的進程崩潰。 在Java中,沒有具體的BrokenPipeException。 將此類錯誤包含在另外一個異常,例如java.io.IOException:Broken pipe數據庫
其實當該異常產生的時候,對於服務端來講,並無多少影響。由於多是某個客戶端忽然停止了進程致使了該錯誤。可是爲了程序可以美觀、優雅,仍是要在合適的地方捕獲該異常,並處理一下。還有一種可能性就是程序裏面有代碼執行時間過長,用戶等待時間太久,纔會強行停止進程。那麼這種狀況下就須要去分析log中報異常的地方是常常發生在什麼地方,合理優化該段代碼,提高代碼的運行速度,才能從根本上避免此類問題的再次發生。網絡