最近项目虽然已经在正常运行,可是偶尔会有一些不知名的错误冒出来,好比时不时报一个数据库主键重复或者某些时候会有null的异常报出来。看看代码写完能跑起来还只是开始而已,须要不断精进重构,才能让代码运行流畅,今天就发现了另外一个没有见过的问题:Broken pipe。java
pipe是管道的意思,管道里面是数据流,一般是从文件或网络套接字读取的数据。 当该管道从另外一端忽然关闭时,会发生数据忽然中断,便是broken。 对于文件File来讲,这多是文件安装在已断开链接的光盘或远程网络上。 对于socket来讲,多是网络被拔出或另外一端的进程崩溃。 在Java中,没有具体的BrokenPipeException。 将此类错误包含在另外一个异常,例如java.io.IOException:Broken pipe数据库
其实当该异常产生的时候,对于服务端来讲,并无多少影响。由于多是某个客户端忽然停止了进程致使了该错误。可是为了程序可以美观、优雅,仍是要在合适的地方捕获该异常,并处理一下。还有一种可能性就是程序里面有代码执行时间过长,用户等待时间太久,才会强行停止进程。那么这种状况下就须要去分析log中报异常的地方是常常发生在什么地方,合理优化该段代码,提高代码的运行速度,才能从根本上避免此类问题的再次发生。网络