有人能帮助理解HttpTimeoutException和TimeoutException之间的区别吗。
根据HttpTimeoutException 的定义
在指定的时间段内未收到响应时抛出。
和超时异常
阻塞操作超时时引发异常。指定了超时的阻塞操作需要一种方法来指示超时已经发生。对于许多这样的操作,可以返回指示超时的值;当这不可能或不可取时,则应声明并抛出TimeoutException。
好吧,Exception
s是Java中发出问题信号的一种方式。您可以随时使用any来显示问题,但使用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客户端或服务器响应时间过长时,我们应该使用HttpTimeOutException
,因为这是I(nput(O(utput(问题。
当问题是计算耗时过长时,应该使用TimeoutException
,但在http连接的情况下则不应使用。就我个人而言,即使它是键盘,我也不会用它来处理占用太长时间的I(nput(O(utput(。我将声明我自己的Exception
,它将扩展IOException
并称之为IOTimeoutException
,并使用它使其对未来的读者更清晰。
希望它能有所帮助。欢迎在评论中进一步提问-我会在需要时更新我的答案。