2015-04-01 41 views
0

写入OutputStream时,如果远程机器关闭或断开连接,它将抛出IOException异常。现在,我想调用一个特定的方法,只有(并且只有)管道损坏。问题是IOException没有codeerrno属性来检查此错误。我能够实现这一目标的唯一方法是通过仅在抛出IOException时检查断开的管道

 try { 
      stream.write(message.getBytes("UTF8")); 
      stream.flush(); 
     } catch (IOException e) { 
      if (e.getMessage().equals("sendto failed: EPIPE (Broken pipe)")) { 
       // perform a specific action 
      } else { 
       e.printStackTrace(); 
      } 
     } 

很明显,这不是实现这样的事情的完美方式。任何有效解决方案的建议?

回答

0

As mentioned here

在Java中,没有专门BrokenPipeException。这种类型的 错误将被包含在不同的例外中,例如 SocketExceptionIOException

所以你可以使用String#contains()方法达到同样的

if(e.getMessage().contains("Broken Pipe")){ 
// Do Whatever you want to do 
} 
相关问题