如何在F.Promise.get(超时)中检测和处理超时

时间:2014-12-17 16:06:34

标签: java asynchronous exception-handling playframework-2.0

当我执行对F.Promise.get(timeout)的调用时,我会发现超时异常。

不幸的是,以下代码段无法编译,因为TimeoutException实际上从未被抛出,因为它是一个已检查的异常。

final Promise<WSResponse> routeRequest = WS.url(baseRoute)…;
try {
    return routeRequest.get(10000);
} catch (final TimeoutException ex) {
    // log something
    return DEFAULT;
}

F.Promise.get(timeout)实际引发了哪个超时异常? (文件没有说明)

如何捕获或处理它?<​​/ p>

1 个答案:

答案 0 :(得分:0)

你试过捕捉Throwable吗?请参阅下面的斜体(来自Play Framework documentation):

  

public A get(long timeout)

     

等待获得结果的承诺。

     

参数:超时 - 用户定义的超时(以毫秒为单位)

     

返回:承诺的结果

     

抛出: java.lang.Throwable - 如果提供承诺的计算引发了异常