On Monday, 12 January 2015 at 23:01:53 UTC, Ola Fosheim Grøstad
wrote:
On Monday, 12 January 2015 at 22:06:32 UTC, deadalnix wrote:
No, Exception are a bail out mechanism. It is the, I have no
idea what to do about this mechanism.
The way it is done in C++, yes.
If you put aside performance concerns, exceptions for control
flow also tend to make many code path implicit and makes for
very unreadable/unmaintainable code.
But exceptions are control flow. There is no such thing as
normalized control flow, all state changes implies "control
flow". Think in terms of a state machine. You could just remove
all variables and only have a big state machine (assuming
finite dimensions). Every single state transition implies flow
of control.
The control flow you see in the source code is just the
programmer's "rendition" of control flow. Exceptions is a
mechanism for getting cluttering resolution out of that
rendition to make the code more readable and maintainable. The
goal is to retain the meat of the computation and remove the
noise.
Or to put it differently, there are many ways to write the same
function. Good use of exceptions removes the clutter and leaves
the things you care about visible. It's a mechanism, not a
moral issue or a religion.
So there is nothing wrong with throwing HTTPStatus(409) or
HTTPStatus(201), even though it returns state to the
environment. If that means the code is more maintainable and
more likely to be correct, then that is good use of the
mechanism.
I usually don't do this, but I really need to post a "+1" here:
+1