Недавно я получил отзыв от коллеги о моем исходном коде веб-сайта.Он говорит, что это плохая практика - не обрабатывать изящно то, что визуальный интерфейс не позволяет делать.
Поскольку это не очень понятно, вот пример.
Допустим, посетитель может что-то прокомментировать.
- Комментарий сохраняется в базе данных в столбце
nvarchar(500)
. - Длина поля
<input />
ограничена 500.
Но, конечно, ничто не запрещает более опытному пользователю отключить ограничение длины и ввести 501 символ.
(Другие примеры: отправка опции, которой даже нет в<select />
. Но там - это изящная ошибка, когда пользователя просят ввести число, и вместо этого она вводит не число, поскольку события нажатия клавиш контролируются с помощью JavaScript, иJavaScript может быть отключен)
Если посетитель сделает это, произойдет сбой на уровне контрактов кода.Запрос AJAX не будет выполнен с непредвиденной ошибкой (или при отправке страницы возникнет непредвиденная ошибка).Во всех случаях посетитель увидит, что что-то случилось, но не получит изящного сообщения, указывающего, что длина отправленного комментария слишком велика.
Почему это плохая практика?Зачем мне создавать четкие и явные сообщения об ошибках в тех случаях, когда посетитель, который правильно использует веб-сайт, никогда не получит?
Примечание. Я понимаю, что отстойно отображать подробную ошибку .NET Frameworkи трассировка стека, когда что-то подобное происходит.Если я это сделаю, это серьезная проблема безопасности.Но в моем случае это просто ответ AJAX с чем-то очень общим или перенаправление на общую страницу с извинениями за ошибку.