|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2013-07-12 18:41 UTC] 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
PatchesPull Requests
Pull requests:
HistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Wed Oct 29 10:00:01 2025 UTC |
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 { }