首页  

netty异常处理机制     所属分类 netty 浏览量 1544
入站 出站异常处理

入站异常处理

默认的ChannelHandler#exceptionCaught 把异常传给管道中的下一个处理器
如果一个异常到达了管道的尾部,被记录为未被处理 记录 warning 日志
自定义处理,重写exceptionCaught方法,直接处理掉异常或继续传播

public class InboundExceptionHandler extends ChannelInboundHandlerAdapter {
    @Override
    public void exceptionCaught(ChannelHandlerContext ctx,Throwable cause) {
        cause.printStackTrace();
        ctx.close();
    }
}

InboundExceptionHandler 放到 pipeline最后,确保入站的所有异常都会被处理

public interface ChannelInboundHandler extends ChannelHandler
void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception;

The exceptionCaught() method is only invoked for exceptions from inbound events like channelRead(), channelActive() etc.


出站异常处理

出站 I/O 操作 返回一个 ChannelFuture
几乎所有的ChannelOutboundHandler都会传递一个ChannelPromise实例,
作为ChannelFuture的子类,它也可以被监听器管控来获取异步通知,但是ChannelPromise为实时通知提供可写的方法
setSuccess setFailure


public interface ChannelPromise extends ChannelFuture, Promise< Void>
    @Override
    ChannelPromise setSuccess(Void result);

    ChannelPromise setSuccess();

    @Override
    ChannelPromise setFailure(Throwable cause);

上一篇     下一篇
netty 服务端启动日志

springboot应用安全防护

netty ChannelFuture 实例

Garbage Collection Roots

内存分析工具MAT中的重要概念

获取jvm heap dump 的几种方式