有人可以帮忙了解HttpTimeoutException和TimeoutException之间的区别。

按照HttpTimeoutException的定义

在指定时间段内未收到响应时抛出。

TimeoutException

阻塞操作超时时引发异常。指定了超时的阻塞操作需要一种手段来指示发生了超时。对于许多这样的操作,可以返回一个指示超时的值。如果不可能或不希望这样做,则应声明并抛出TimeoutException。

最佳答案

好吧,Exception是一种用Java发出问题信号的方法。您始终可以使用任何方式来显示问题,但是使用Exceptions是一种有助于理解问题的好方法。

您询问的两个Exception都像所有Exception一样扩展Exception。为什么不总是抛出Exception?因为对于贫穷的开发人员来说,接收NumberFormatExceptionNullPointerException比基本的Exception更有意义。

好的,让我们看一下TimeoutExceptionHttpTimeoutException

java.lang.Object
 java.lang.Throwable
  java.lang.Exception
   java.util.concurrent.TimeoutException

java.lang.Object
 java.lang.Throwable
  java.lang.Exception
   java.io.IOException
    java.net.http.HttpTimeoutException

我们可以看到的第一个区别是,HttpTimeoutException扩展了IOException,而TimeoutException扩展了基本Exception。它告诉我们什么?

如果HTTP客户端或服务器响应问题的时间太长,这是I(nput)O(utput)问题,则应使用HttpTimeOutException

当问题是计算花费的时间太长时,而不是在http连接的情况下,应该使用TimeoutException。就个人而言,即使它是键盘,我也不会花很长时间将它用于I(nput)O(utput)。我将声明自己的Exception,它将扩展IOException并将其称为IOTimeoutException并使用它为将来的读者提供更清晰的信息。

希望它会有所帮助。随时在评论中提问-我会在需要时更新我的​​答案。

07-21 16:37