Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #21704
| From | Peter Otten <__peter__@web.de> |
|---|---|
| Subject | Re: Context Manager getting str instead of AttributeError instance |
| Date | 2012-03-15 20:01 +0100 |
| Organization | None |
| References | <5B80DD153D7D744689F57F4FB69AF474026B9264@SCACMX008.exchad.jpmchase.net> |
| Newsgroups | comp.lang.python |
| Message-ID | <mailman.695.1331838082.3037.python-list@python.org> (permalink) |
Prasad, Ramit wrote:
> 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.
I don't think so:
>>> class A(object):
... def __enter__(self): return self
... def __exit__(self, *args): print args
...
>>> with A() as a:
... a.x
...
(<type 'exceptions.AttributeError'>, AttributeError("'A' object has no
attribute 'x'",), <traceback object at 0x7f57b70f22d8>)
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
AttributeError: 'A' object has no attribute 'x'
> 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?
Back to comp.lang.python | Previous | Next | Find similar | Unroll thread
Re: Context Manager getting str instead of AttributeError instance Peter Otten <__peter__@web.de> - 2012-03-15 20:01 +0100
csiph-web