--TEST-- Bug #31102 (Exception not handled when thrown inside __autoload()) --FILE-- <?php $test = 0; function __autoload($class) { global $test; echo __METHOD__ . "($class,$test)\n"; switch($test) { case 1: eval("class $class { function __construct(){throw new Exception('$class::__construct');}}"); return; case 2: eval("class $class { function __construct(){throw new Exception('$class::__construct');}}"); throw new Exception(__METHOD__); return; case 3: return; } } while($test++ < 5) { try { eval("\$bug = new Test$test();"); } catch (Exception $e) { echo "Caught: " . $e->getMessage() . "\n"; } } ?> ===DONE=== <?php exit(0); ?> --EXPECTF-- __autoload(Test1,1) Caught: Test1::__construct __autoload(Test2,2) Caught: __autoload __autoload(Test3,3) Fatal error: Class 'Test3' not found in %sbug31102.php(%d) : eval()'d code on line 1