Sorry for the soliloquy, but what I am really using is the following so that the re-raised excpetion has the same type:
def PoliteException(e): class PoliteException(e.__class__): def __init__(self, e): self._e = e def __getattr__(self, name): return getattr(self._e, name) def __str__(self): if isinstance(self._e, PoliteException): return str(self._e) else: return '\n%s: %s, I am sorry!' % ( self._e.__class__.__name__, str(self._e)) return PoliteException(e) try: unicode('\xe4') except Exception, e: raise PoliteException(e) -- http://mail.python.org/mailman/listinfo/python-list