Context Manager getting str instead of AttributeError instance

Prasad, Ramit ramit.prasad at
Thu Mar 15 18:34:44 CET 2012

So I have a context manager used to catch errors

def __exit__( self, exceptionClass, exception, tracebackObject ):
    if isinstance( exception, self.exceptionClasses ):
         #do something here

Normally exception would be the exception instance, but for 
AttributeError it seems to be a string instead. 

1) Why is AttributeError different than the other built-ins
in this respect?
2) Are there other standard errors like this (I know
that SystemExit is different as well)?
3) Taking into account that I want to include subclasses of 
classes listed in self.exceptionClasses, Is there a better check I can use?


Ramit Prasad | JPMorgan Chase Investment Bank | Currencies Technology
712 Main Street | Houston, TX 77002
work phone: 713 - 216 - 5423


This email is confidential and subject to important disclaimers and
conditions including on offers for the purchase or sale of
securities, accuracy and completeness of information, viruses,
confidentiality, legal privilege, and legal entity disclaimers,
available at  

More information about the Python-list mailing list