Подтвердить что ты не робот

Выбрасывание исключений в блоке 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.

Спасибо заранее!

4b9b3361

Ответ 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

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