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 
}