On 31Dec2009 12:18, Phlip <phlip2...@gmail.com> wrote: | Pythonistas: | | I need to do this: | | try: | deep_arcane_layer() | except e: | e.message = 'the deep arcane layer says: ' + e.message | raise e | | The point is I need to augment that layer's exceptions with extra | information that I know about that layer.
Doesn't the above work (modulo changing the right exception attributes)? I've got a context manager that does something like this. It is hampered by the fact that not all exceptions have the same internal structure, for historic reasons I believe. So I've got this ugly stuff in the __exit__ method: if exc_value is not None: if hasattr(exc_value, 'args') and len(exc_value.args) > 0: exc_value.args = [pfx + ": " + str(exc_value.args[0])] \ + list(exc_value.args[1:]) else: # we can't modify this - at least report the current prefix # state sys.stderr.write("%s: Pfx.__exit__: exc_value = %s\n" % (pfx, repr(exc_value),)) You can see I modify the .args value. The method returns False to let the exception percolate back out the stack. The "else" part is to handle exceptions I can't change, so for now I've just printing the "pfx" context on stderr as the exception bubbles out. Nasty. The calling code looks like this: with Pfx("some tag"): ... suite ... Cheers, -- Cameron Simpson <c...@zip.com.au> DoD#743 http://www.cskk.ezoshosting.com/cs/ There is this special biologist word we use for 'stable'. It is 'dead'. - Jack Cohen -- http://mail.python.org/mailman/listinfo/python-list