[Python-ideas] Arguments to exceptions

Steven D'Aprano steve at pearwood.info
Tue Jul 4 10:45:44 EDT 2017


On Mon, Jul 03, 2017 at 10:44:20PM +0100, Paul Moore wrote:

> > 1. Change BaseException. This allows people to pass the components
> >     to the message without ruining str(e).
> 
> I dispute this is the essential place to start. If nothing else, the
> proposed approach encourages people to use a position-based "args"
> attribute for exceptions, rather than properly named attributes.

Right -- and not only does that go against the exception PEP

https://www.python.org/dev/peps/pep-0352/

but it's still fragile unless the callee guarantees to always pass the 
values you want in the order you expect.

And even if they do make that promise, named attributes are simply 
better than positional arguments. Who wants to write:

    err.args[3]  # or is it 4, I always have to look it up...

when you could write:

    err.column

instead?



-- 
Steve


More information about the Python-ideas mailing list