栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何捕捉净值中的所有异常

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何捕捉净值中的所有异常

您可以在管道的顶部/尾部只有一个入站和出站异常处理程序。如果您想捕获所有异常,则可以执行以下操作(我假设这是Netty 4.0):

import io.netty.channel.*;import java.net.SocketAddress;public class ExceptionHandler extends ChannelDuplexHandler {    @Override    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {        // Uncaught exceptions from inbound handlers will propagate up to this handler     }    @Override    public void connect(ChannelHandlerContext ctx, SocketAddress remoteAddress, SocketAddress localAddress, ChannelPromise promise) {        ctx.connect(remoteAddress, localAddress, promise.addListener(new ChannelFutureListener() { @Override public void operationComplete(ChannelFuture future) {     if (!future.isSuccess()) {         // Handle connect exception here...     } }        }));    }    @Override    public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) {        ctx.write(msg, promise.addListener(new ChannelFutureListener() { @Override public void operationComplete(ChannelFuture future) {     if (!future.isSuccess()) {         // Handle write exception here...     } }        }));    }    // ... override more outbound methods to handle their exceptions as well}

入站处理程序引发的任何异常都将“向上”传播到管道中并调用此处理程序的

exceptionCaught()
方法,前提是下面的处理程序不使用它们。

对于像出站操作

write()
connect()
,你需要添加一个
ChannelFutureListener
吸引他们的异常。
exceptionCaught()
方法只调用的例外,从入站事件一样
channelRead()
channelActive()
等等。

通过将此处理程序置于管道的“顶部”,我们可以捕获下面所有出站处理程序的异常。假设您的出站处理程序中的一个正在执行某种编码,但此操作失败并例外,这将由我们添加到该

write()
操作的Promise中的通道将来的侦听器处理。

如果此异常处理程序像您最初建议的那样安装在管道的“底部”
/头部,则它将看不到来自其上方处理程序的异常,因为

write()
如果在先前的处理程序中写入失败,则永远不会调用其方法。这就是为什么此处理程序必须位于顶部的原因。

为了希望避免对管道顶部/底部的混淆,这是我如何配置示例管道:

pipeline.addLast(outboundHandler2)        // bottom        .addLast(outboundHandler1)        .addLast(inboundHandler2)        .addLast(inboundHandler1)        .addLast(new ExceptionHandler()); // top


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/431118.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号