У меня есть 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
В качестве побочного элемента: Исключения обычно определяют исключительные состояния приложения, а не сообщения об ошибках после проверки. Это не исключение, когда пользователь дает неверные данные