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