Edit report at https://bugs.php.net/bug.php?id=65254&edit=1
ID: 65254 Updated by: larue...@php.net Reported by: ryan dot brothers at gmail dot com Summary: Exception not catchable when exception thrown in autoload with a namespace -Status: Assigned +Status: Closed Type: Bug Package: Scripting Engine problem Operating System: Linux PHP Version: 5.5.0 Assigned To: laruence Block user comment: N Private report: N New Comment: Automatic comment on behalf of laruence Revision: http://git.php.net/?p=php-src.git;a=commit;h=ebad5178c4ae0da124469b1432fb0e890f6147da Log: Fixed bug #65254 (Exception not catchable when exception thrown in autoload with a namespace). Previous Comments: ------------------------------------------------------------------------ [2013-07-12 18:48:34] ryan dot brothers at gmail dot com Upon further testing, I can reproduce the issue without using namespaces with the following: <?php function __autoload($class) { require('ns_test.php'); throw new \Exception('abcd'); } try { test::go(); } catch (Exception $e) { echo 'caught'; exit; } ================================================= ns_test.php: <?php class test { } ------------------------------------------------------------------------ [2013-07-12 18:41:12] ryan dot brothers at gmail dot com Description: ------------ In the following code, the exception is not caught. In PHP 5.3, the exception is caught, but in PHP 5.4 and PHP 5.5, the exception is not caught. The issue only occurs when the class is in a namespace. If I remove the namespace from the class, then the exception is caught. Test script: --------------- <?php function __autoload($class) { require('ns_test.php'); throw new \Exception('abcd'); } try { \ns_test\test::go(); } catch (Exception $e) { echo 'caught'; exit; } ================================================= ns_test.php: <?php namespace ns_test; class test { } Expected result: ---------------- caught Actual result: -------------- Warning: Uncaught exception 'Exception' with message 'abcd' in /tmp/test.php:6 Stack trace: #0 /tmp/test.php(11): __autoload('ns_test\test') #1 {main} thrown in /tmp/test.php on line 6 Fatal error: Call to undefined method ns_test\test::go() in /tmp/test.php on line 11 ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=65254&edit=1