ID: 28290 Updated by: [EMAIL PROTECTED] Reported By: arnoud at rattink dot com -Status: Open +Status: Feedback Bug Type: Zend Engine 2 problem Operating System: SuSE Linux 8.2 PHP Version: 5.0.0RC2 New Comment:
Please try using this CVS snapshot: http://snaps.php.net/php5-STABLE-latest.tar.gz For Windows: http://snaps.php.net/win32/php5.0-win32-latest.zip Can't reproduce, seems to be fixed. Previous Comments: ------------------------------------------------------------------------ [2004-05-14 00:01:42] arnoud at rattink dot com 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. ------------------------------------------------------------------------ [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