Суть в следующем, есть кусочек кода в файле myclass.php.
class myclass
{
static function myfunc()
{
print "asdasdasdasdasrwe5345";
}
}
Есть еще кусочек кода в другом фаиле main.php это как бы основной фаил в котором точка входа программы, а именно там есть некий класс в коотором есть вызов куска кода из фаила myclass.php.
try
{
$f = new myclass();
}
catch (Exception $e)
{
echo "404";
}
подключение фаила в момент вызова осуществляет загрузчик loadfunc, который регистрируется с помощью spl_autoload_register(array(self, 'loadfunc'));
Сам загрузчик простой стандартный, по символам почеркивания делает путь и ищет. И если фаил не существует загрузчик кидает throw new Exception('фаил не существует');
Так вот если все так как написано сейчас работает нормально, если фаил отсутсвует исключение ловится в
catch (Exception $e)
{
echo "404";
}
если же заменить $f = new myclass(); на myclass::myfunc() то происходт fatal error исключение бросается, после throw ничего не выполняет, но вместо catch происходит краш...почему? То есть если осуществляется вызов статического класса то исключение не ловится. Если обысно создается объект то все ок.
Всю голову сломал..
ps если catch внутри функции автозагрузки то работает нормально (ну оно и ясно)