Выбрасывание исключений в блоке PHP Try Catch

У меня есть PHP-функция в файле Drupal 6..module. Я пытаюсь запустить начальные проверки переменных до выполнения более интенсивных задач (таких как запросы к базе данных). В C # я использовал для выполнения операторов IF в начале моего блока Try, который выдавал новые исключения, если проверка не удалась. Исключенное исключение попадает в блок Catch. Ниже приведен код PHP:

function _modulename_getData($field, $table) { try { if (empty($field)) { throw new Exception("The field is undefined."); } // rest of code here... } catch (Exception $e) { throw $e->getMessage(); } } 

Однако, когда я пытаюсь запустить код, он говорит мне, что объекты могут быть выброшены только внутри блока Catch.

Заранее спасибо!

 function _modulename_getData($field, $table) { try { if (empty($field)) { throw new Exception("The field is undefined."); } // rest of code here... } catch (Exception $e) { /* Here you can either echo the exception message like: echo $e->getMessage(); Or you can throw the Exception Object $e like: throw $e; */ } } 

Чтобы бросить вызов

  throw $e; 

а не сообщение.

Просто удалите throw из блока catch – измените его на echo или иначе обработайте ошибку.

Это не говорит вам, что объекты могут быть выброшены только в блок catch, он говорит вам, что могут быть выброшены только объекты , а местоположение ошибки находится в блоке catch – есть разница.

В блоке catch вы пытаетесь выбросить что-то, что вы только что поймали, – что в этом контексте не имеет никакого смысла, и вещь, которую вы пытаетесь выбрасывать, – это строка.

Реальная аналогия того, что вы делаете, это ловить мяч, а затем пытаться бросить только логотип производителя где-то в другом месте. Вы можете только бросать целый объект, а не свойство объекта.

 throw $e->getMessage(); 

Вы пытаетесь выбросить string

В качестве побочного элемента: Исключения обычно определяют исключительные состояния приложения, а не сообщения об ошибках после проверки. Это не исключение, когда пользователь дает неверные данные