DatagramSocket.receive()什么时候抛出IOException?

时间:2013-11-09 11:35:48

标签: java sockets ioexception datagram

我正在创建一个需要侦听传入UDP包的服务器。

我的问题是我不知道如何处理IOException上的DatagramSocket.receive()。我可以找到的每个教程都只是打印其堆栈跟踪并继续或将其从方法中抛出。没有人真正告诉我何时或为什么抛出异常。即使是Javadoc也只是声明:

IOException - if an I/O error occurs when creating the socket.

这让我很难回答在这种情况下应该做些什么。

  • 我可以安全地继续阅读插座吗?
  • 我应该关闭它并再试一次吗?
  • 我应该把它视为致命的例外并退出一切吗?

1 个答案:

答案 0 :(得分:2)

如果您设置了读取超时并且它到期,它将抛出SocketTimeoutException。在这种情况下,您可以重试。如果出现其他问题,它会抛出IOException:其中大部分对套接字是致命的,你必须关闭它。