Исключения: перенаправление или рендер? - PullRequest
0 голосов
/ 10 ноября 2009

Я пытаюсь стандартизировать способ обработки исключений в своем веб-приложении (самодельная структура), но я не уверен в «правильном» способе обработки различных ситуаций. Мне интересно, есть ли лучшая практика с точки зрения пользовательского интерфейса / дружественной точки зрения.

  1. Пользователь входит в приложение и открывает две вкладки, показывающие один и тот же экран. На одной вкладке они выдают команду удаления на объекте FOO. Затем на другой вкладке они нажимают команду редактирования на FOO (которая больше не существует); например запрос GET для editObject.php?object_id=FOO. Что мне делать, когда они выдают запрос на редактирование этого несуществующего объекта?

    -В настоящее время я перенаправляю эти «отсутствующие» объекты на предыдущую страницу с сообщением об ошибке типа «объект не существует».

  2. Пользователь отправляет запрос GET для поиска объектов с помощью color=Red, например, searchObjects.php?color=Red. Запрос, возвращающий эти результаты, взорвался, потому что кто-то удалил таблицу OBJECTS. Это неожиданное исключение и не совсем то же самое, что 1).

    -В настоящее время я перенаправляю на errorPage.php с сообщением «Неожиданная ошибка»

  3. В общем, что мне делать, если вместо этого загадочно отсутствуют параметры GET / POST, которые должны . Возможно, кто-то пытается что-то ввести?

    -В настоящее время я отношусь к ним так же, как 2)


Что я должен делать в каждом из трех вышеуказанных случаев?

  1. Отображение представления "Объект не существует" по URL-адресу editObject.php?object_id=FOO
  2. Перенаправление на контроллер, отображающий сообщение об ошибке: header('Location: errorPage.php')
  3. Служите 404: не уверен в синтаксисе для этого в PHP / Apache
  4. Другое

1 Ответ

0 голосов
/ 10 ноября 2009

Я бы сказал, визуализировать его и обслуживать 404. Таким образом, у пользователя есть шанс увидеть, где он ошибся в URL, или скопировать и вставить его. Если вы перенаправите на страницу с общей ошибкой, у них такой возможности не будет.

PHP обслуживает 404:

header("HTTP/1.0 404 not found");
...