"__autoload threw an exception" during an uncaught Exception
| Bug #26591 | "__autoload threw an exception" during an uncaught Exception | ||||
|---|---|---|---|---|---|
| Submitted: | 2003-12-11 07:30 UTC | Modified: | 2003-12-11 13:15 UTC | ||
| From: | bugzilla at malkusch dot de | Assigned: | |||
| Status: | Closed | Package: | Class/Object related | ||
| PHP Version: | 5.0.0b2 (beta2) | OS: | Debian Woody | ||
| Private report: | No | CVE-ID: | None | ||
[2003-12-11 07:30 UTC] bugzilla at malkusch dot de
Description:
------------
If I use __autoload() PHP says "__autoload threw an exception" while I throw an exception which would be caught somewhere between several catch statements.
That means __autoload() first loads the Class for the thrown Exception then PHP searches a catch statement for the threwn exception. The first statement is for another Exception (the exception still is uncaught) so __autoload should load this class. But here it fails and says "__autoload threw an exception".
A Workaround would be to require all Exceptions for all catch Statements before any exception is thrown.
Reproduce code:
---------------
// Be sure that Test1.php and Test2.php exists
function __autoload($className) {
echo '<br>' . $className;
require_once ucfirst($className) . '.php';
echo 'loaded';
}
// If I would do "require_once Test1.php;" here
// everything would work
try {
throw new Test2();
} catch(Test1 $e) {
} catch(Test2 $e) {
}
Expected result:
----------------
test2loaded
test1loaded
Actual result:
--------------
test2loaded
test1
Fatal error: __autoload threw an exception in /home/malkusch/http/index.php on line 13
Patches
Pull Requests
History
AllCommentsChangesGit/SVN commits
[2003-12-11 13:15 UTC] helly@php.net