Req #50726 [Opn->Wfx]: Resume after Exceptions
Edit report at http://bugs.php.net/bug.php?id=50726&edit=1
ID: 50726
Updated by: jani@php.net
Reported by: kenaniah at gmail dot com
Summary: Resume after Exceptions
-Status: Open
+Status: Wont fix
Type: Feature/Change Request
-Package: Feature/Change Request
+Package: *General Issues
Operating System: Linux
PHP Version: 5.3.1
Block user comment: N
Private report: N
Previous Comments:
------------------------------------------------------------------------
[2010-01-12 00:48:09] kenaniah at gmail dot com
I agree that this may be abuse of exceptions. Essentially, I am looking
for some sort of flow control system that allows me send messages,
handle them, and yield control back to various points in the execution
stack at my discretion.
------------------------------------------------------------------------
[2010-01-12 00:16:31] degeberg@php.net
An exception is by definition a state where the program no longer knows
how to proceed. It's basically a way of saying "I give up, you'll have
to handle this yourself". You have this ability using a try-catch block.
Exceptions shouldn't be used to control the application flow, but should
be used for genuinely exceptional situations.
In my opinion, if a try-catch block doesn't satisfy your needs, you are
more than likely misusing exceptions.
------------------------------------------------------------------------
[2010-01-11 23:53:02] kenaniah at gmail dot com
Description:
------------
I think that PHP would benefit greatly by implementing a feature known
as "resumeable" exceptions. The end goal would be to provide a method by
which code execution may be continued from the point at which an
exception was thrown.
Naturally, some exceptions should not be resumeable by nature, which
would require an extension to the Exception class of a simple boolean
property indicating whether an instance of that exception can be resumed
or not.
The only real problem AFAICS with resumeable exceptions has to do with
the state of the execution stack. Obviously, if execution were to be
resumed after an exception is handled, the stack can not be unwound
automatically (Schrodinger's cat, anyone?).
My suggestion would be to allow another keyword besides "catch" (such as
"resume") to handle exceptions. If a resumeable exception is thrown and
caught in a "resume" block, the parser should proceed as if it were
handling a function call. In short, the unwinding of the execution stack
would need to be deferred until it is determined whether or not
execution will be resumed at the point of the exception.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/bug.php?id=50726&edit=1
Thread (4 messages)