2

写入时,如果远程机器关闭或已断开连接,OutputStream它将引发异常。IOException现在,我想在仅(且仅)管道损坏时调用特定方法。问题是IOException没有codeorerrno属性来检查这个错误。我能够做到这一点的唯一方法是

        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();
            }
        }

显然,这不是实现这一目标的完美方式。对有效解决方案有什么建议吗?

4

1 回答 1

1

正如这里提到的

在Java中,没有BrokenPipeException具体的。这种类型的错误将被包裹在不同的异常中,例如 a SocketExceptionIOException

所以你可以实现相同的使用String#contains()方法

if(e.getMessage().contains("Broken Pipe")){
// Do Whatever you want to do 
}
于 2015-04-01T12:06:15.647 回答