Java 仅在引发IOException时检查管道是否损坏
当写入Java 仅在引发IOException时检查管道是否损坏,java,android,ioexception,broken-pipe,Java,Android,Ioexception,Broken Pipe,当写入OutputStream时,如果远程机器停机或已断开连接,它将抛出IOException异常。现在,我只想在管道断开时调用一个特定的方法。问题在于IOException没有code或errno属性来检查此错误。我能做到这一点的唯一方法是 try { stream.write(message.getBytes("UTF8")); stream.flush(); } catch (IOException e) {
OutputStream
时,如果远程机器停机或已断开连接,它将抛出IOException
异常。现在,我只想在管道断开时调用一个特定的方法。问题在于IOException
没有code
或errno
属性来检查此错误。我能做到这一点的唯一方法是
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();
}
}
显然,这不是实现这一目标的完美方式。有什么有效解决方案的建议吗?
在Java中,没有专门的BrokenPipeException
。这种
错误将被包装在不同的异常中,例如
SocketException
或IOException
因此,您可以使用String#contains()
方法实现相同的功能
if(e.getMessage().contains("Broken Pipe")){
// Do Whatever you want to do
}