Suppose exceptions have an optional "context" attribute, which is
set when the exception is raised in the context of handling another
exception. Thus:
def a():
try:
raise AError
except:
raise BError
yields an exception which is an instance of BError. This instance
would have as its "context" attribute an instance of AError.
Or, in a more complex case:
def compute():
try:
1/0
except Exception, exc:
log(exc)
def log(exc):
try:
file = open('error.log') # oops, forgot 'w'
print >>file, exc
file.close()
except:
display(exc)
def display(exc):
print 'Aaaack!', ex # oops, misspelled 'exc'
Today, this just gives you a NameError about 'ex'.
With the suggested change, you would still get a NameError about 'ex';
its 'context' attribute would show that it occurred while handling an
IOError on error.log; and this IOError would have a 'context' attribute
containing the original ZeroDivisionError that started it all.
What do you think?
-- ?!ng
_______________________________________________
Python-Dev mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe:
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com