Выбрасывание исключений в блоке PHP Try Catch
У меня есть функция PHP в файле Drupal 6..module. Я пытаюсь запустить начальные проверки переменных до выполнения более интенсивных задач (таких как запросы к базе данных). В С# я использовал для выполнения операторов 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.
Спасибо заранее!
Ответы
Ответ 1
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;
*/
}
}
Ответ 2
Чтобы вернуться,
throw $e;
не сообщение.
Ответ 3
Просто удалите throw
из блока catch - измените его на echo
или иначе обработайте ошибку.
Не сообщая вам, что объекты могут быть выброшены только в блок catch, он сообщает вам, что могут быть выброшены только объекты, а местоположение ошибки находится в блоке catch - есть разница.
В блоке catch вы пытаетесь выбросить что-то, что вы только что поймали, - что в этом контексте не имеет никакого смысла - и вещь, которую вы пытаетесь выбрасывать, - это строка.
Реальная мифология того, что вы делаете, это ловить мяч, а затем пытаться бросить только логотип производителя где-то еще. Вы можете только бросать целый объект, а не свойство объекта.
Ответ 4
throw $e->getMessage();
Вы пытаетесь выбросить string
В качестве побочного элемента: Исключения обычно определяют исключительные состояния приложения, а не сообщения об ошибках после проверки. Это не исключение, когда пользователь дает неверные данные