Handles all messages.

        - If a exception is thrown, catch it and display a nice traceback instead of crashing.
        - Do the appropriate processing for each event type.

def handle_msg(self, c, e):
        """Handles all messages.

        - If a exception is thrown, catch it and display a nice traceback instead of crashing.
        - Do the appropriate processing for each event type.

        """
        try:
            self.handler.handle_msg(c, e)
        except Exception as ex:
            backtrace.handle_traceback(ex, c, self.get_target(e), self.config)