HttpTimeoutException和TimeoutException之间的区别

时间:2016-09-28 09:31:31

标签: java exception timeout

有人可以帮助理解HttpTimeoutException和TimeoutException之间的区别。

根据HttpTimeoutException

的定义
  

在指定时间段内未收到回复时抛出。

TimeoutException

  

阻塞操作超时时抛出异常。阻止指定超时的操作需要一种方法来指示超时已发生。对于许多这样的操作,可以返回指示超时的值;当那是不可能或不可取的时候,应该声明并抛出TimeoutException。

1 个答案:

答案 0 :(得分:2)

嗯,Exception是一种表示Java问题的方法。你可以随时使用任何一个来显示问题,但是使用有助于理解问题的异常是一种很好的方式。

您提出的Exception两个Exception都延伸Exception,就像所有Exception一样。为什么不总是抛出NumberFormatException?因为对于可怜的开发者而言,接收NullPointerExceptionException对基本TimeoutException更有意义。

好的,让我们来看看HttpTimeoutExceptionjava.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延伸TimeoutExceptionException延伸基本HttpTimeOutException。它告诉我们什么?

我们应该使用TimeoutException当问题是http客户端或服务器响应时间过长,因为它是I(输入)O(utput)问题。

当问题是计算时间过长时,应该使用Exception,但是在http连接的情况下不应该使用IOException。就个人而言,我不会用它来为我(输入)O(utput)花费太长时间,即使它是键盘。我会声明我自己的IOTimeoutException,它会扩展@grouped_options = Category.all.map { |category| [category.name, category.products.map { |product| [product.name,product.id]}]} 并将其称为<!DOCTYPE html> <html lang="en"> <head> <script type="text/ecmascript" src="jquery/js/jquery-1.7.2.min.js"></script> <script type="text/ecmascript" src="jquery/js/i18n/grid.locale-en.js"></script> <script type="text/ecmascript" src="jquery/js/jquery.jqGrid.min.js"></script> <link rel="stylesheet" type="text/css" media="screen" href="jquery/css/ui.jqgrid.css"/> <link rel="stylesheet" type="text/css" media="screen" href="jquery/css/jquery-ui.css" /> <meta http-equiv="content-type" content="text/html" charset="UTF-8"> <title>IPAM</title> </head> <body> <table id="jqGrid"></table> <div id="jqGridPager"></div> <script type="text/javascript"> $(document).ready(function () { $("#jqGrid").jqGrid({ url:'http://localhost:1323/api/v1/leases', mtype: "GET", datatype: 'jsonString', jsonReader:{ repeatitems: false, id: "address", }, colModel: [ {label: 'address', index:'address', key: true, width: 100}, {label: 'client_id', name:'client_id', width: 150}, {label: 'expire', name:'expire', width: 150}, {label: 'fqdn_fwd', name:'fqdn_fwd', width: 150}, {label: 'fqdn_rev', name:'fqdn_rev', width: 150}, {label: 'hostname', name:'hostname', width: 150}, {label: 'hwaddr', name:'hwaddr', width: 150}, {label: 'state', name:'state', width: 150}, {label: 'subnet_id', name:'subnet_id', width: 150}, {label: 'valid_lifetime', name:'valid_lifetime', width: 150}, ], page: 1, scroll: 1, viewrecords: true, width: 780, height: 250, rowNum: 20, pager: "#jqGridPager" }); }); </script> </body> </html> 并使用它来使未来的读者更清楚。

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