有人可以帮忙了解HttpTimeoutException和TimeoutException之间的区别。
按照HttpTimeoutException的定义
在指定时间段内未收到响应时抛出。
和TimeoutException
阻塞操作超时时引发异常。指定了超时的阻塞操作需要一种手段来指示发生了超时。对于许多这样的操作,可以返回一个指示超时的值。如果不可能或不希望这样做,则应声明并抛出TimeoutException。
最佳答案
好吧,Exception
是一种用Java发出问题信号的方法。您始终可以使用任何方式来显示问题,但是使用Exceptions是一种有助于理解问题的好方法。
您询问的两个Exception
都像所有Exception
一样扩展Exception
。为什么不总是抛出Exception
?因为对于贫穷的开发人员来说,接收NumberFormatException
或NullPointerException
比基本的Exception
更有意义。
好的,让我们看一下TimeoutException
和HttpTimeoutException
。
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
并使用它为将来的读者提供更清晰的信息。希望它会有所帮助。随时在评论中提问-我会在需要时更新我的答案。