在我的软件中,我需要通过ObjectOutputStream在客户端和服务器之间发送消息。
发送方法的核心如下:
....
try {
objWriter.writeUnshared(bean);
objWriter.flush();
} catch (Exception e) {
....
}
...
当删除网络电缆时在Windows XP上运行我的应用程序writeUnsahred给我一个例外。
现在我正在尝试将我的应用程序运行到ubuntu 12.10中,如果我移除电缆,该方法不会抛出任何东西!
任何提示??
答案 0 :(得分:1)
是否以及何时获得例外取决于:
您可以从Java控制的唯一部分是您自己的套接字发送缓冲区。因此,如果例外情况发生,则完全无法预测。因此,您不得编写应用程序以依赖特定行为。
答案 1 :(得分:0)
是的,但是按照writeUnshared和flush调用的方法,我看到write(OutputStream.class:106)被调用,如果流被关闭,这个方法必须生成异常...所以我用这些信息来检查我是否频道是活跃的...问题是,在ubuntu中,即使我移除了电缆,频道似乎也是开放的。