Код, который вы отправили, кажется правильным. Вот единственное, что приходит мне в голову.
С учетом вышесказанного, если код находится внутри класса, определяющего пространство имен, ваш код не будет работать, так как он попытается сослаться на Exception как \ namespace \ Exception, которого не существует. «Пассивные» ссылки, такие как в catch
предложениях или instanceof
выражениях, разрешены, потому что отсутствующий класс может быть загружен позже.
Чтобы это работало, вы должны поставить перед именем класса косую черту (то есть \ Exception), чтобы указать PHP использовать PHP из глобального пространства (или root, если вы хотите его так называть) (PHP), а не ваше пространство имен;
<?php
namespace test;
class Foo
{
public function bar()
{
try
{
something_that_might_break();
}
catch (\Exception $e)
{
// this will work
}
}
}
?>
Вы можете найти много информации о пространствах имен здесь: http://php.net/manual/en/language.namespaces.php.