title: twisted clientConnectionLost catch/suppress Exception
body: <p>I have a project that uses twisted. In a child class from twisted.internet.protocol.ClientFactory, there are methods for clientConnectionLost / clientConnectionFailed. When an error occurs in the data exchange, this method execution with connector and reason. I can look at the type and value of exception. But I did not find information on how to suppress it. After processing, it is raise up as Unhandled Error. And I can not make a global exception handler, I need to handle exceptions depending on the type and value in this context(and re-connect etc).</p>
  
  <pre><code>class MyProtocol(Protocol):
      def connectionMade(self):
          raise Exception('Connect error')
  
  
  class Client(ClientFactory):
      protocol = MyProtocol
  
      def clientConnectionLost(self, connector, reason):
          print reason.type, reason.value  # show type and message, OK
          reason.cleanFailure()  # ???
  
  
  reactor.connectTCP('127.0.0.1', 80, Client())
  reactor.run()
  
  # Unhandled Error
  # Traceback (most recent call last): ...............
  </code></pre>
  
  <p>Any ideas?</p>