Почему мое исключение не поймано поймать?

У меня есть код, который выглядит так

# Try to import file try { DataManager::fileImport($_FILES['datafile']['tmp_name'], $_POST['zones'], $_POST['statuses']); } catch(Exception $e) { print 'Herp.'; $response->body = Helpers::getVarDump($e); } 

DataManager::fileImport – это буквально однострочная функция, которая DataManager::fileImport нормальное исключение:

 static function fileImport($filepath, $zones, $statuses) { throw new Exception('SOME EXCEPTION'); } 

И все же я получаю

Неустранимая ошибка: исключить исключение «Исключение» с сообщением «НЕКОТОРЫЕ ИСКЛЮЧЕНИЯ» …

Из блока try. Также «Герп». никогда не печатается. Почему исключение не вызывает блокировку catch?


EDIT: Я должен упомянуть, что я использую Tonic и PHP 5.3.9

EDIT AGAIN: вот DataManager (с именами, замененными на … для анонимности) http://pastebin.com/daHWBJDC

Solutions Collecting From Web of "Почему мое исключение не поймано поймать?"

Решение

Я забыл указать use \Exception; в файле, содержащем try / catch.

Размышление

Я знаю, что преднамеренно, что каждое пространство имен в PHP должно определять свое собственное исключение по многим причинам, но мне все же кажется странным, что catch(Exception e) не вызывал ошибок, когда Exception в этом контексте не было определено. Если бы я написал new Exception() я получил бы ошибку.

Хорошо, по крайней мере, я кое-что узнал.

Странный. Если я запустил этот код, я получу «Herp».

 <?php class DataManagerTest { static function fileImport($filepath, $zones, $statuses) { throw new Exception('SOME EXCEPTION'); } } # Try to import file try { DataManagerTest::fileImport("param1","param2","param3"); } catch(Exception $e) { print 'Herp.'; } ?> 

У вас может быть проблема с вашим классом DataManager, потому что я скопировал ваш код, адаптировал его для запуска, и я получил обработку исключений … Проблема в другом месте …

 class DataManager { static function fileImport($filepath, $zones, $statuses){ throw new Exception('SOME EXCEPTION'); } } try{ DataManager::fileImport('', '', ''); }catch(Exception $e){ print 'Herp.'; } 

Результаты в

 Herp.