И это в конструкции вида
try { throw new Exception(); } catch (Exception $e) { }
Так вышло из-за действия namespace, в catch скрипт пытается отловить исключение класса \ТекущийNamespace\Exception невзирая на то, что такого класса не существует в природе, проверка на него все-таки производится.
И при выбросе стандартного исключения и при его отлове лучше всегда явно указывать нужное namespace.
try { throw new \Exception(); } catch (\Exception $e) { }
Комментарии: