首页 > 解决方案 > 检查 OutputStream 是否有损坏的管道

问题描述

void sendMessage(String message, OutputStream os) {
    try {
        ExternalLibrary.sendMessage(message, os);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

我有上面的代码,它使用外部方法通过输出流发送消息。如果存在 IO 异常(例如管道损坏),该方法将执行一些日志记录并抛出 IOException。如果管道损坏,我想防止发生日志记录。该方法执行的日志记录模糊且难以查看,因此我只想在可以合理确定管道没有损坏的情况下调用它。就像是:

void sendMessage(String message, OutputStream os) {
    if (!os.isClosed()) {
        try {
            ExternalLibrary.sendMessage(message, os);
        } catch (IOException e) {
            e.printStackTrace();
        }
    } else {
        logger.error("Broken pipe");
    }
}

标签: java

解决方案


OutputStream 不知道“损坏”的概念!管道也是一种不同的设计。你的意思是流。

只有该方法write(*)能够产生IOException可用于表达破损管道的内容。

不幸的是,该方法write(*)在内部被调用ExternalLibrary.sendMessage(message, os);

你的任务太迟了

如果我可以合理地确定管道没有破裂,请打电话给它


推荐阅读