In <[EMAIL PROTECTED]>, Thomas
Lotze wrote:
> I wonder how to solve the following problem the most pythonic way:
>
> Suppose you have a function f which, as part of its protocol, raises some
> standard exception E under certain, well-defined circumstances. Suppose
> further that f calls other functions which may also raise E. How to best
> distinguish whether an exception E raised by f has the meaning defined by
> the protocol or just comes from details of the implementation?
>
> […]
>
> Several solutions come to mind, neither of which I'm satisfied with:
>
> - f might catch E exceptions from the implementation and raise some other
> error in their stead, maybe with an appropriate message or treating the
> traceback in some helpful way. This destroys the original exception.
This is the way to go I think. After all it's not an ordinary `E` but one
that has a special, well defined meaning if raised by `f` itself according
to your protocol.
Put the original exception as an attribute to the new one and/or subclass
the new exception type from `E`. This way calling code can choose to to
handle both types as `E` if the distinction is not important.
Ciao,
Marc 'BlackJack' Rintsch
--
http://mail.python.org/mailman/listinfo/python-list