netty - 将从 ChannelInboundHandlerAdapter 捕获的错误传播到 ChannelFuture
问题描述
我正在尝试将从客户端处理程序级别 (ChannelInboundHandlerAdapter) 捕获的异常传播到通道级别 (ChannelFuture)。
用例似乎很简单:
我从一个 REST 请求开始;
做一些检查并启动 FTP 连接;
如果我在处理程序级别 (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 |
* +---------------------------+
有人帮我弄清楚吗?
解决方案
推荐阅读
- python - 有没有办法通过一个集合,同时添加项目并迭代它们?
- ssl - 如何最好地解决 SSL 加密对零拷贝优化的不利影响
- ruby-on-rails - 在 rails 应用程序中创建按钮不起作用。为什么不保存到数据库?
- apache - 使用自定义域名访问 docker 容器化应用程序
- mediastore - Android Q:从文件夹路径读取音频文件
- python - 我试图创建一个循环,如果输入不是带有 exept valueerror 的 int 则触发
- node.js - 使用带有 sqlite3 的 knex 测试 node.js 方法永远不会停止
- java - Intellij:项目有两个名字?
- c# - 使用正则表达式查找最接近字符串的括号
- twilio - 如何使用 Twilio Autopilot 发送多条消息?