java - 检查 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");
}
}
解决方案
OutputStream 不知道“损坏”的概念!管道也是一种不同的设计。你的意思是流。
只有该方法write(*)
能够产生IOException
可用于表达破损管道的内容。
不幸的是,该方法write(*)
在内部被调用ExternalLibrary.sendMessage(message, os);
。
你的任务太迟了
如果我可以合理地确定管道没有破裂,请打电话给它
推荐阅读
- java - 使用 SSL 的 Websocket 客户端端点
- node.js - Rbomongo 和 Robo3t 启动错误对话框
- java - JAVA AES ECB 加密到 Golang 迁移
- artificial-intelligence - 蒙特卡洛树搜索 - 处理游戏结束节点
- tcp - 如果我在以太网 II、巨型帧和 DIX 的数据中间和数据包末尾看到以太网 FCS,该怎么办
- rest - CodenameOne:使用 REST PATCH 调用的问题
- java - 如何在 JUnit 测试用例中使用 BeanPostProcessor
- python-3.x - 在 Windows 10 64 位版本中找不到名为 tensorflow 的模块
- android - 手机喜欢(oppo)fcm通知声音来但通知不可见
- c# - Application Insights 不包括由自定义 ITelemetryInitializer 设置的属性