From e5bcc74cd52ed3f277a4733d1e3e1a17cf4b7e84 Mon Sep 17 00:00:00 2001 From: Trustin Lee Date: Wed, 30 May 2012 11:48:04 -0700 Subject: [PATCH] Warn if the last inbound handler forwarded an exceptionCaught() event --- .../java/io/netty/channel/DefaultChannelPipeline.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/transport/src/main/java/io/netty/channel/DefaultChannelPipeline.java b/transport/src/main/java/io/netty/channel/DefaultChannelPipeline.java index 5818ce510e..72bc4eceb6 100644 --- a/transport/src/main/java/io/netty/channel/DefaultChannelPipeline.java +++ b/transport/src/main/java/io/netty/channel/DefaultChannelPipeline.java @@ -668,9 +668,18 @@ public class DefaultChannelPipeline implements ChannelPipeline { DefaultChannelHandlerContext ctx = firstInboundContext(); if (ctx != null) { fireExceptionCaught(ctx, cause); + } else { + logTerminalException(cause); } } + private static void logTerminalException(Throwable cause) { + logger.warn( + "An exceptionCaught() event was fired, and it reached at the end of the " + + "pipeline. It usually means the last inbound handler in the pipeline did not " + + "handle the exception.", cause); + } + @SuppressWarnings("unchecked") private void fireExceptionCaught(DefaultChannelHandlerContext ctx, Throwable cause) { if (cause == null) { @@ -1270,6 +1279,8 @@ public class DefaultChannelPipeline implements ChannelPipeline { DefaultChannelHandlerContext next = nextInboundContext(this.next); if (next != null) { DefaultChannelPipeline.this.fireExceptionCaught(next, cause); + } else { + logTerminalException(cause); } }