title: Error exception must derive from BaseException even when it does (Python 2.7)
body: <p>What's wrong with the following code (under Python 2.7.1):</p>
  
  <pre><code>class TestFailed(BaseException):
      def __new__(self, m):
          self.message = m
      def __str__(self):
          return self.message
  
  try:
      raise TestFailed('Oops')
  except TestFailed as x:
      print x
  </code></pre>
  
  <p>When I run it, I get:</p>
  
  <pre><code>Traceback (most recent call last):
    File "x.py", line 9, in &lt;module&gt;
      raise TestFailed('Oops')
  TypeError: exceptions must be old-style classes or derived from BaseException, not NoneType
  </code></pre>
  
  <p>But it looks to me that <code>TestFailed</code> does derive from <code>BaseException</code>.</p>