[Python-ideas] Arguments to exceptions
steve at pearwood.info
Wed Jul 5 13:32:21 EDT 2017
On Wed, Jul 05, 2017 at 04:12:29PM +0000, Ed Kellett wrote:
> On Wed, 5 Jul 2017 at 16:41 Steven D'Aprano <steve at pearwood.info> wrote:
> > and more. Third parties *are* providing rich exception APIs where it
> > makes sense to do so, using the interface encouraged by PEP 352 (named
> > attributes), without needing a default "StructuredException" in the
> > core language.
> Your arguments might be used to dismiss anything.
Do you have an answer for why the argument is wrong? People *are*
writing structured exceptions, which undercuts the argument that we must
do something because if we don't lead the way others won't.
The argument that "we must do something, this is something, therefore we
must do it" doesn't cut any ice here. Read the Zen of Python:
Now is better than never.
Although never is often better than *right* now.
The burden is not on me to prove that this idea is a bad idea. I don't
have to prove this is a bad idea. The burden is on those who want to
make this change to demonstrate to the satisfaction of the core
developers that their idea:
- solves a genuine problem;
- without introducing worse problems;
- that it will do what they expect it to do;
- and that the change is worth the effort in implementation
and the cost to the language (bloat and churn).
If proponents of the idea can't do that, then the status quo wins:
I've had a number private emails complaining that I'm "too negative" for
this list because I pointed out flaws. Do people think that we make
Python better by introducing flawed changes that don't solve the problem
they're supposed to solve?
(I'm not going to name names, you know who you are.)
If people want this change, it's not enough to get all snarky and
complain that critics are "too negative" or "too critical of minor
problems". You need to start by **addressing the criticism**.
In the very first reply to Ken's initial proposal, it was pointed out
that his plan goes against PEP 352 and that he would have to address why
that PEP is wrong to encourage named attributes over positional
arguments in exception.args. As far as I can see, nobody has even
attempted to do that.
I think that's the place to start: if your plan for giving exceptions
structure is to just dump everything into an unstructured args list with
no guaranteed order, then you're not actually giving exceptions
structure and you're not solving the problem.
(like the fact that the
doesn't actually solve the
it is intended to).
You know what? I don't have to prove anything here. It's up to the
people wanting this change to prove that it is useful, worth the
effort, and that it will do what they expect.
Ken suggested a concrete change to BaseException to solve a real lack.
His solution can't work, for reasons I've already gone over, but at
least he's made an attempt at a solution. (He hasn't demonstrated that
there is a real problem
If people are already
> doing $thing, clearly they don't need help from the language. If they're
> not already doing it, any language feature would be pointless.
More information about the Python-ideas