outbound异常处理链

来源:6-7 异常的传播

augustvip

2019-01-22

老师您好,了解了inbound的 异常处理链后,看一下在outbound中的异常处理
发现源码中没有对outBound的异常处理链 ,netty在调用
private void write(Object msg, boolean flush, ChannelPromise promise) {

if (flush) {
next.invokeWriteAndFlush(m, promise);
} else {
next.invokeWrite(m, promise);
}

}
无论是writeAndFlush 还是write 方法中都没有显示的捕获异常
为什么不和inbound一样,一路将异常抛到向前抛到headContext中做处理呢?

谢谢

写回答

1回答

闪电侠

2019-01-26

write 的时候,如果发生异常,确实没有一路抛出来,而是将异常塞到promise中,然后用户可以监听这个promise,通过 promise.cause()拿到这个异常,我的理解是,这个write是一个主动触发的操作,应该由主动触发的地方添加监听器的方式来处理异常,我的理解也不一定对,这个设计的理解仅作为参考哈

0
1
augustvip
嗯 谢谢解答
2019-01-27
共1条回复

Java读源码之Netty深入剖析

解析netty各大组件细节,百万级性能调优,设计模式实际运用

2334 学习 · 283 问题

查看课程