首页 > 解决方案 > 将从 ChannelInboundHandlerAdapter 捕获的错误传播到 ChannelFuture

问题描述

我正在尝试将从客户端处理程序级别 (ChannelInboundHandlerAdapter) 捕获的异常传播到通道级别 (ChannelFuture)。

用例似乎很简单:

  1. 我从一个 REST 请求开始;

  2. 做一些检查并启动 FTP 连接;

  3. 如果我在处理程序级别 (exceptionCaught) 遇到异常,我会将其传播到 REST 级别。

我使用过以下方法: ChannelFuture.channel().closeFuture().cause()ChannelFuture.isDone()或类似方法。对于每种方法,我都得到了 true 或 null,这意味着操作已成功完成。

 *                                      +---------------------------+
 *                                      | Completed successfully    |
 *                                      +---------------------------+
 *                                 +---->      isDone() = true      |
 * +--------------------------+    |    |   isSuccess() = true      |
 * |        Uncompleted       |    |    +===========================+
 * +--------------------------+    |    | Completed with failure    |
 * |      isDone() = false    |    |    +---------------------------+
 * |   isSuccess() = false    |----+---->      isDone() = true      |
 * | isCancelled() = false    |    |    |       cause() = non-null  |
 * |       cause() = null     |    |    +===========================+
 * +--------------------------+    |    | Completed by cancellation |
 *                                 |    +---------------------------+
 *                                 +---->      isDone() = true      |
 *                                      | isCancelled() = true      |
 *                                      +---------------------------+

有人帮我弄清楚吗?

标签: netty

解决方案


推荐阅读