ID: 28290
User updated by: arnoud at rattink dot com
Reported By: arnoud at rattink dot com
Status: Open
Bug Type: Zend Engine 2 problem
Operating System: SuSE Linux 8.2
PHP Version: 5.0.0RC2
New Comment:
That is not true. Example:
<?
function f() { throw new Exception("I am an exception");
}
try
{
$v = f();
echo "This is not supposed to get printed\n";
}
catch(Exception $e) {
echo "caught exception\n";
}
?>
This just prints 'caught exception'. That is entirely
correct. Now if you were right, then the above code should
execute both echos. It does not, so is that a bug? I say
it's a catch 22.
Either this program, or the one with the 'eval' works out
wrong. Personally I believe the whole idea of 'throwing an
exception' is that you bypass all intermediate code and
land straight into the 'catch' block. At least, that's how
it works in C++ and Java.
Previous Comments:
------------------------------------------------------------------------
[2004-05-11 05:10:37] vkatragadda at email dot com
hello, i dont think this is a bug. i believe the line after eval gets
executed by default. i think everything in the try{} block is supposed
to get executed, and then the catch{} block is called...
------------------------------------------------------------------------
[2004-05-11 05:07:44] vkatragadda at email dot com
hello, i dont think this is a bug. i believe the line after eval gets
executed by default. i think everything in the try{} block is supposed
to get executed, and then the catch{} block is called...
------------------------------------------------------------------------
[2004-05-05 23:47:01] arnoud at rattink dot com
Description:
------------
The code below prints GRRRRRRRR. This is incorrect as the
throwing of the exception is supposed to bring us
immediately to the catchblock. It is also inconsistent,
since I can replace the eval with just
$f = AAAAAARRRRRRRRG();
and then it skips the echo.
Reproduce code:
---------------
<?
function AAAAAARRRRRRG(){
throw new Exception("AAAAAARRRRRRG");
}
try {
eval('$f = AAAAAARRRRRRG();');
echo "GRRRRRRRR\n";
}
catch(Exception $e) {
echo "Exception caught nice and clean\n";
}
?>
Expected result:
----------------
I do not expect to see GRRRRRRRR.
Actual result:
--------------
GRRRRRRRR
Exception caught nice and clean
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=28290&edit=1