我的服务中有公共方法,根据我的查询字符串返回一些东西。一切顺利,它返回我想要的CompletionStage与预期的数据。但是我想要涵盖所有可能的事件(例如IOFailure或一些运行时异常)。我注意到ask()
方法可能会导致AskTimeoutException。我没有一个想法如何捕捉这个例外。我不能在常规的try-catch块中执行此操作,因为" AskTimeoutException永远不会在相应的块中抛出"
这是我的方法:
public CompletionStage<FindResponseMsg> find(String query, int limit) {
FindMsg findMsg = new FindMsg(query, limit);
// TODO timeout
return FutureConverters.toJava(ask(indexerRouter, findFileMsg, 10000))
.thenApply(response -> ((FindResponseMsg) response));
}
我的问题是如何在即将到来的未来捕捉失败?