diff --git a/src/main/java/net/floodlightcontroller/core/internal/Controller.java b/src/main/java/net/floodlightcontroller/core/internal/Controller.java
index 93fb9364b761b769c8743f70a81b2740a0df2734..0836faeca89f9d88130372cb59664a6a2f8de495 100644
--- a/src/main/java/net/floodlightcontroller/core/internal/Controller.java
+++ b/src/main/java/net/floodlightcontroller/core/internal/Controller.java
@@ -342,7 +342,9 @@ public class Controller
                     processOFMessage((OFMessage)e.getMessage());
                 }
             } catch (Exception ex) {
-                Channels.fireExceptionCaught(ctx, ex);
+            	// We are the last handler in the stream, so run the exception
+            	// through the channel again by passing in ctx.getChannel().
+                Channels.fireExceptionCaught(ctx.getChannel(), ex);
             }
         }
         
@@ -572,8 +574,6 @@ public class Controller
                         handleMessage(sw, m, null);
                         break;
                 }
-            } catch (Exception e) {
-                log.warn("Exeption in handling OF message {}", e);
             }
             finally {
                 sw.processMessageLock().unlock();
@@ -1221,8 +1221,6 @@ public class Controller
                 }
             }
             switchResultSet.save();
-        } catch (Exception e) {
-            log.error("Error updating switch info {}", e);
         }
         finally {
             if (switchResultSet != null)